CakePHP vs CodeIgniter: BenchMarking(2)

来源:互联网 发布:知乎可以发帖子吗 编辑:程序博客网 时间:2024/06/17 01:38

Cake和CI在架构/设计和代码结构上是最为相似的两个框架。不过很显然它们对于公共类加载的策略上完全不同。

BenchMarking(1)里面已经给出了CakePHP读取简单数据并显示的性能基线测试数据。可以看到性能表现不佳,具体原因还需要再进一步探查源码。

下面对CI,在同一台服务器上运行,从同一个数据库同一张表格中读取相同数据,做了相同的测试。


CI版本:2.0.3


测试命令

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


测试代码


class Deals extends CI_Controller {

    public function index()
    {
        //$this->output->cache(10);
        $this->load->database();        
        $this->load->model('Deal');
        $data['query'] = $this->Deal->get_deals(); //get 10 records
        $this->load->view('deals',$data);
    }
}

红色部分是开启还是禁用cache。上面是禁用了cache。


测试结果

在禁用cache的情况下,CI的处理能力达到了40 trans/sec

在开启cache的情况下(即把红色代码uncomment掉),CI的处理能力达到了80trans/sec


可见在性能是首要衡量因素,而开发效率其次的情况下,CI这种最小化内核,按需加载的框架是更好的选择。

Cake这种基于假定预先加载的策略,在很多情况上有overhead,系统会在意识不到的情况下牺牲了性能。

尽管性能上存在较大差距,不过Cake相比CI有如下优点

*)AutoMagic简化了编程

*)Model的关联查询大大简化了数据查询

*)更OO,设计上更加精致

*)有更成熟的测试方案

*)内置Auth和ACL

*)更好的ORM

*)更完备的Cache

这使得Cake在开发效率上要胜出CI。

打个比喻,可能会更好的了解两者设计思路上的差异,CI好比鱼肠,Cake则好比巨阙。

两个框架都是学习的好对象,也都可以构造大规模/海量用户应用,如Cake曾被Mozzila用于开发addons。

究竟选择哪个框架取决于具体的应用场景和开发团队技术背景。

原创粉丝点击