`
hulunberbus
  • 浏览: 859324 次
文章分类
社区版块
存档分类
最新评论

CakePHP vs CodeIgniter: BenchMarking(1)

 
阅读更多

CakePHP的性能一直以来口碑不佳。

和CI/Yii比较,输出一个简单的hello world或者稍微复杂一点,从数据库读取几条数据并echo时,测试结果表明每秒处理能力要相差好几倍。

这并非意味着CakePHP的编码质量有问题,而是Cake加载了更多的辅助类,作了更多的数据和魔术处理,这对于简单的测试程序有点overhead了。


实际上获取若干数据的性能也和测试代码息息相关。有很多因素会在没有意识到的情况下影响测试结果的客观性。


为了更好的了解影响性能的因素,本文使用siege对一个简单的从数据库获取3条用户记录并打印到页面的程序进行了多方面的测试。

测试平台

CPU:2个处理器,Intel(R) Xeon(R) CPU E5620 @ 2.40GHz

Mem:2G内存

OS:CentOS

CakePHP版本:1.3.11

命令:

[test@test siege-2.70]$ siege -b -c5 -r10 http://localhost:5800/consumers


测试用例1

关闭cache、加载系统配置(app/config/...),加载定制的路由,加载常用组件Auth,ACL,Session,Cookie,加载常用helper:Html,Form,Layout,Javascript,Image。

数据表存在3个关联表,使用默认recursive,即在查询时同时返回所有关联表数据。控制器action代码如下:

function index() {
$this->theme = 'v1';
$this->layout = false;
//$this->Consumer->recursive = -1;
$consumers = $this->Consumer->find('all',array('limit'=>10));
$this->set('consumers', $consumers);
}


测试结果

处理能力2~3个请求/秒


测试用例2

关闭cache,去除所有和读取数据并显示无关代码(即移除任何没有使用到的通用代码如读取配置、路由设置、组件、Helper),recursive设置成-1,把上面的代码中的红色部分uncomment掉,即不读取任何关联表数据。


测试结果

处理能力在7~8个请求/秒


测试用例3

在测试用例2的基础上开启Cake的cache


测试结果

处理能力在17~19个请求/秒


结论:

影响测试结果的因素很多,基本上在不使用Cache的情况下,处理能力和加载了多少公共类和添加了多少处理公共逻辑的代码直接相关。

最差结果和最佳结果之间差别达到一个数量级。深入了解影响性能的因素是优化性能的前提和基础。

接下去准备用CI读取相同的数据做进一步的测试和对比。


分享到:
评论

相关推荐

    cakePHP_tutorial:https

    CakePHP应用程序框架 使用 3.x创建应用程序的框架。 框架源代码可以在这里找到: 。 安装 下载或更新composer self-update 。 运行php composer.phar create-project --prefer-dist cakephp/app [app_name] 。 ...

    cakephp-version:CakePHP3

    版本CakePHP 4.x插件,可促进版本化的数据库实体安装将以下行添加到应用程序的composer.json : " require " : { " josegonzalez/cakephp-version " : " dev-master "} 接下来是命令: composer update 或者直接运行...

    cakephp-ajax:用于CakePHP的AJAX:用于简化处理AJAX请求的插件

    CakePHP Ajax插件 一个CakePHP插件,使使用AJAX变得容易。 该分支适用于CakePHP 4.0+ 。 有关详细信息,请参见。 这个插件是做什么用的? 基本上是DRY(不要重复自己)和简单的AJAX处理。 演示版 有关实时演示,...

    Codeigniter Grid 使用方法 (flexigrid)

    博客分类: Codeigniter / CakePHP ASPRailsRubyPHPGoogle 来源:http://codeigniter.com/forums/viewthread/75326/P0/ Updated: 6 September 2008 Although I love CI, I’ve decided to move this thread to ...

    CakePHP :: Ajax Demo

    This is a simple demo of some of the AJAX helpers now available in CAKE. These helpers are directly modeled on Ruby On Rails. In fact, they were shamelessly ported from rails almost verbatim....

    cakephp-analyzer:分析CakePHP 3.x的插件

    CakePHP 3.X的分析器插件该分析器插件是一个跟踪和报告网站流量的插件。安装您可以使用将此插件安装到CakePHP应用程序中。 推荐的安装作曲家软件包的方法是: composer require cakemanager/cakephp-analyzer:dev-...

    cakephp-captcha:CakePHP 验证码实现

    CakePHP 2.2+ 的验证码支持 使用随机文本alpha|math生成需要人工验证的图像。 这是为了防止自动垃圾邮件和垃圾邮件机器人。 特征: 多种验证码类型alpha|math 支持文字旋转 可以设置图像的宽度和高度尺寸 字体...

    cakephp_4:CakePHP 4

    CakePHP应用程序框架 使用 4.x创建应用程序的框架。 框架源代码可以在这里找到: 。安装下载或更新composer self-update 。 运行php composer.phar create-project --prefer-dist cakephp/app [app_name] 。 如果...

    cakephp:CakePHP:PHP快速开发框架-官方资料库

    通过Composer安装CakePHP ...$ composer require cakephp/cakephp 有关(最小/最大)PHP版本的详细信息,请参见。 运行测试 假设您使用介绍的方法之一在系统范围内安装了PHPUnit,则可以通过执行以下操作

    cakephp-utils:CakePHP实用程序

    CakePHP3.x Qobo Utils插件 对于我们的一些插件和应用程序来说,各种公用程序都非常有用。 这个插件是由为开发的。 它可以用作独立的CakePHP插件,也可以用作安装的一部分。用法使用composer安装pugin: composer ...

    Learn CakePHP: With Unit Testing, 2nd Edition

    2016 | ISBN: 1484212134 | English | 114 pages | EPUB | 1 MB Accelerate your development of PHP applications using the popular CakePHP web application development framework and unit testing. This ...

    cakephp-rest:CakePHP REST插件-在CakePHP应用程序中轻松构建REST API端点

    用于CakePHP的Rest插件 该插件简化了CakePHP 3应用程序的REST API开发。 它只是将控制器的输出转换为JSON响应。 安装 您可以使用将此插件安装到CakePHP应用程序中。 推荐的安装作曲家软件包的方法是: composer ...

    cakephp-uploader:CakePHP 的上传器行为

    CakePHP 2.x 的上传器行为 在基于 Cake 模型的表单中上传文件的简单方法 用法: 在您的模型中加载上传器行为: var $actsAs => array('Uploader' => array( 'files' => array( 'img' => array('src' => '...

    cakephp-opauth:用于 Opauth 的 CakePHP 3.x 插件

    Opauth 的 CakePHP 插件用于CakePHP 3.x 插件。 Opauth 是一个多提供商身份验证框架。要求CakePHP >= v3.0 Opauth >= v1.0使用您可以在直接从 Composer 安装 CakePHP-Opauth 插件。如何使用使用 Composer 安装此插件...

    cakephp_queue:CakePHP的简约JobQueue插件

    CakePHP队列插件这是一个非常简单且极简的CakePHP作业队列(或延迟任务)系统。 如果该项目仍然与您相关,请在此处使用维护的fork: :

    cakephp-boilerplate:用于 Zyesis 项目的 CakePHP 样板,具有 Composer 和 Bootstrap 优点

    CakePHP 样板 用于 Zyesis 项目的 CakePHP 样板。 装载了以下好东西: 作曲家 CakePHP 2.x( 加载) CakePHP 插件: (Zyesis fork) 其他供应商软件包: 设置 直接通过 Composer 设置新项目 composer create-...

    cakephp-revisions:CakePHP 修订插件(CakeFest 2015)

    cakephp-修订版CakePHP 修订插件(CakeFest 2015) CakePHP 3.x 的插件,允许您在应用程序中跟踪表的修订(在实体级别)要求安装[使用] 将插件添加到您项目的composer.json - 如下所示: {"require": {"cwbit/...

    cakephp-docker:一个简单的cakephpapp 4.2 docker设置

    :shortcake: CakePHP Docker 用于Docker Compose和Kubernetes的模板。 服务主机:端口Docker主机图像带有Xdebug 3PHP7.4-FPM -- PHPNGINX 1.19 本地主机:8080 网路MySQL的8 本地主机:3607 D b 安装分叉并克隆此...

    cakephp-notifier:该插件可存储基于多态表的通知,并以第二个表作为用户关联

    cakephp-notifier:该插件可存储基于多态表的通知,并以第二个表作为用户关联

    CakePHP-HybridAuth:用于HybridAuth的CakePHP插件

    如果您使用的是CakePHP 3.4+,请改用我的 。 CakePHP HybridAuth插件 一个CakePHP插件,允许在库上使用社交符号。 要求 CakePHP 3.1及更高版本。 安装 跑步: composer require --prefer-dist admad/cakephp-...

Global site tag (gtag.js) - Google Analytics