如何确定CodeIgniter的速度?

时间:2008-08-16 19:27:20

标签: php performance codeigniter benchmarking

我正在考虑使用名为CodeIgniter的PHP框架。

我感兴趣的一件事就是它的速度。但是,我没有办法知道它有多快,而且不想简单地用它的网站来表达它。有人知道我自己如何确定它的速度,或者有人可以告诉我一个可以的网站吗?

13 个答案:

答案 0 :(得分:17)

Code Igniter还有一些内置的基准测试工具: http://codeigniter.com/user_guide/general/profiling.html

答案 1 :(得分:9)

是的,问题是您必须构建应用程序以对其进行分析。

在工作中,我们在外面编写了几个项目,我们在将它们放在主箱上之前进行了负载测试。我们很惊讶地发现两者都存在严重的性能问题;一个是用CakePHP编写的,另一个是用Drupal编写的。我不认为这突出了任何框架或CMS的问题,除了需要在任何将获得大量流量的站点上进行性能分析和负载测试。在这两种情况下,它都是开发人员所做的,而不是导致问题的软件平台的特征。例如,开发人员在Cake项目中创建了一个递归函数调用,它在每次递归时实例化整个Cake对象,如果服务器在负载下生效,它就会取出服务器。

在我看来,绩效不应成为选择框架的决定性因素;客观差异很可能是微不足道的,您使用它的方式可能会导致比框架固有性能更多的性能问题。

我认为,要扩展任何PHP应用程序以在负载下运行,您将需要一个操作码缓存,您需要使用memcached或框架支持的任何内置缓存来编写智能内容缓存。

答案 2 :(得分:3)

如果您的站点是数据库驱动的,那么如果您的瓶颈是应用程序框架,我会非常惊讶。快速开发中的“快速”是我要担心的,而不是像快速处理请求那样“快速”。通过缓存策略和优化数据库访问可以更好地进行重要的优化。

除了数据库访问之外,您自己的代码将用于每个请求的大部分时间(与数据库访问相比通常并不重要),该框架可能不会影响请求所花费的时间,除非它的写得非常糟糕。

最好是寻找一个具有良好缓存支持的框架(Code Igniter可能具有,我不知道),这几乎总能节省你的时间比你可以减少请求处理的几毫秒通过使用稍快的框架。

看看Zend Framework,它有PHP 5的好处,而Code Igniter仍然是PHP 4,据我所知。这可能是一个问题,当涉及到速度,但赞成我不知道的框架。 Zend具有良好的缓存支持和数据库分析器,可以帮助您找到瓶颈所在。

答案 3 :(得分:3)

Paul M. Jones最近更新了他的framework benchmarks。他在一些流行的PHP框架中比较了Hello World应用程序的性能。

这些很有趣,但请记住,这并不能说明真实世界的应用程序。

答案 4 :(得分:2)

我建议你自己测试一下。使用xdebug's profiler创建cachegrind兼容文件,使用webgrind可视化文件。

这样你最终获得了非常可靠的信息。

答案 5 :(得分:1)

你会对Codeigniter感到满意。我有几个负载很重的网站,它对我来说效果非常好。

答案 6 :(得分:1)

西奥,

是Code Igniter提供缓存。不知道效果如何,但它是可用的。

答案 7 :(得分:1)

对于大多数项目来说,CodeIgniter非常快。有些人发布在这里,如果你是谷歌,你会发现它在速度方面与其他框架相比毫不逊色。

我同意另一张海报,在框架选择方面,性能通常不是一个大问题。对于大多数项目而言,主要框架都具有足够的性能。

答案 8 :(得分:1)

我维护的网站每年都会被抨击几次。去年,开发团队使用Codeigniter重写了整个站点,我们在性能方面有很多运气。此外,执行重写所花费的时间很少,因为这个框架很容易使用。如果你发现你不喜欢Codeigniter,我认为CakePHP也是一个很好的选择。

答案 9 :(得分:1)

对于CodeIgniter和其他PHP框架, PHP Quick Profiler 对于基准测试和测量速度非常方便,特别是对于数据库查询。你必须检查一下: php-quick-profiler

它非常易于安装,并提供了一个非常棒的GUI来检查不同的基准测试。

答案 10 :(得分:1)

与其他php框架相比,我发现codeigniter相当快。

它学得很快..; - )

如果你有MVC概念,开始只需几个小时......

答案 11 :(得分:1)

您可能希望阅读CodeIgniter论坛中的THIS THREAD,该论坛会比较首先使用CakePHP开发的完整站点的速度,然后使用CodeIgniter重写

答案 12 :(得分:0)