如何确定 CodeIgniter 的速度?

Posted

技术标签:

【中文标题】如何确定 CodeIgniter 的速度?【英文标题】:How can I determine CodeIgniter speed? 【发布时间】:2010-09-06 00:16:42 【问题描述】:

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

我感兴趣的一件事是它的速度。然而,我没有办法知道它有多快,也不想简单地接受他们网站上的说法。有谁知道我如何自己确定它的速度,或者有人可以告诉我一个可以的网站吗?

【问题讨论】:

【参考方案1】:

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

它非常易于安装,并为检查不同的基准测试提供了出色的 GUI。

【讨论】:

【参考方案2】:

我维护的网站每年都会遭到几次抨击。去年,开发团队使用 Codeigniter 重写了整个网站,我们在性能方面非常幸运。此外,执行重写所需的时间非常短,因为这个框架很容易使用。如果你发现自己不喜欢 Codeigniter,我认为 CakePHP 也是一个不错的选择。

【讨论】:

【参考方案3】:

CodeIgniter 对于大多数项目来说都非常快。有些人在这里发帖,如果你用谷歌搜索,你会发现它在速度方面优于其他框架。

我同意另一位发帖者的观点,即在选择框架时,性能通常不是一个大问题。主要框架对于大多数项目都有足够的性能。

【讨论】:

【参考方案4】:

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

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

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

我相信,要将任何 PHP 应用程序扩展为在负载下运行,您将需要一个操作码缓存,并且您需要使用诸如 memcached 之类的东西或您的框架支持的任何内置缓存来写入智能内容缓存。

【讨论】:

【参考方案5】:

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

除了数据库访问之外,您自己的代码将是每个请求花费大部分时间的地方(即使这与数据库访问相比通常并不重要),框架可能不会影响花费在请求上的时间,除非写的真烂。

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

也看看 Zend 框架,它具有 PHP 5 的优点,而据我了解,Code Igniter 仍然是 PHP 4。在速度方面这可能是一个问题,但我不知道支持哪个框架。 Zend 具有良好的缓存支持和数据库分析器,可以帮助您找到瓶颈所在。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

这样您最终会得到非常可靠的信息。

【讨论】:

以上是关于如何确定 CodeIgniter 的速度?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确包含 codeigniter websocket 库?

如何提高codeigniter的性能

如何在codeigniter中执行排序、搜索、分页

数据表在 Codeigniter 上的加载速度非常慢

如何在codeigniter中设置持久登录?

CodeIgniter - 如何在项目中加载 stripe-php 库?