Ci与yii的比较与性能分析

来源:互联网 发布:java应用服务器有哪些 编辑:程序博客网 时间:2024/05/16 12:42

Ci与yii的比较与性能分析

CI和Yii来讲,不是一个层面的,或者说面向用户不同。Ci在现在一般的行业内认为就是编码不够标准,架构相对简单,学习成本较低。Yii编码规范,纯面向对象,适合大中型的项目,比较受java人员喜欢,但是也带有java一些接近的通病。

 

相同之处:

1.   两者都是php的框架,都是加快开发速度的一种选择

2.   两者都是面向mvc开发,尽管实现形式上有点不一样,但是思想还是一样的。

3.   两者都有很多扩展和插件使用,但是yii的扩展较多一些

4.   都拥有很多丰富的功能。

5.   两个都有比较成熟的论坛,都可以寻找到高手的帮助,迅速解决问题。

 

不同之处:

Yii

1.   Yii纯面向对象,这点比较类似java,所以说比较受java人员喜欢

2.   YiiOO很纯粹

里面各种接口、类、继承、扩展,显得很庞大,丰富的面向对象的思想可以搭建一个非常成熟的系统,并且根据需求做出优秀的功能扩展

3.   Yii的功能很强大

功能强大是好事,也是坏事。框架虽然帮你做了很多,但是没有万能的框架,框架功能越多,符合实际需求预期效果的功能相对就越少,花费时间学习的成本就越高。

 

 CodeIgniter

1.   CI本身非常轻量。

它面向的可能是面向过程到面向对象的程序员,代码很容易搞明白,也不是纯面向对象。它的代码都比较底层,封装一般,代码很多方面不是很严谨和规范。

2.   命名上ci不如yii规范,yii跟tp一样命名方面比如控制器都是NameController.php这种格式的,而ci是随便命名的。

3.   Ci的扩展是比较简便的。

很多以前的代码,简单封装就可以成为ci自己的扩展。

4.   Php的开发速度比较快,但是前端的话就没有yii这么爽,很多都可以直接用内部的模块。

但是可以借助extjs来弥补这个不足。

5.   效率比yii高,速度更胜一筹。

 

测试性能:(借用网上的结果,请文主不要介意)

 

硬件环境:

THINKPAD T61笔记本

CPU:INTEL CORE(TM2) DUO T770

内存:2G

硬盘:320G 7200

显卡:集成显卡

 

软件环境:

操作系统:win 2003 sp2

PHP环境:Apache/2.2.17 (Win32) PHP/5.3.6

数据库:mysql 5.5.10

 

测试工具:apache bench (即:ab)

测试内容:ab -c 10 -n 1000 测试网址

 

让这些框架从同一个数据库,同一个数据表读出1000条数据,并在视图中显示出来,且视图采用视图渲染(即:layout和widget应用)。保证最后输出页面内容相同(HTML完全一样)。

测试结果:

1、原生php:

注:上图测试数据是500次的测试数据,在测试1000时,由于系统报错,故测试了500次。

所用时间:2.032秒(1.016*2)

平均每秒请求次数:492.31

平均每次请求所用时间:20.313毫秒

 

2、codeigniter

测试版本:2.0.2

所用时间:15.266

平均每秒请求次数:65.51

平均每次请求所用时间:152.656毫秒

(是原生PHP运行效率的13.3%)

 

3、yii framework

测试版本:1.1.8

所用时间:26.328

平均每秒请求次数:37.98

平均每次请求所用时间:263.281毫秒

(是原生PHP运行效率的7.7%)

 

性能测试结论:

在综合应用上,他们的运行效率分别是:ci的效率,几乎接近是yii的两倍

 

 

总结:

Ci跟yii各有特长,各有特性,我感觉没有比较的必要,大家还是根据项目应用跟需求选择自己喜欢的框架吧。

还有很多优秀的框架,例如zend,yaf,thinkphp,cakephp,PHPDevShell等等

 

1.  顺便说一下上面的性能测试是比较基础的,但是很多方面优化并不只是单单的从一个方面上进行优化的,有时候,explain好一句mysql就可以顶的上上面的框架速度了,还有例如上面取的是mysql,mysql是大部分web应用的瓶颈,所以有了memcache和redis等等应用提供加速。

 

2.  或者根据不同的需求可以使用mongodb或者nosql替代mysql,这个也会加速不少。

 

3.  例如前端优化,后端优化,c++扩展加速,逻辑加速。

 

4.  各种各样的优化都可以加快网站速度,提高网站性能。

 

所以我个人认为,不必要老是在纠结于哪一个框架的好坏,根据自己的需求和习惯来用好一个框架就好了。

哪怕是java这种大家都认为比较大型的语言,还是有很丰富的应用位置。

别老是在讨论一种语言,一种框架,只要你把一样东西用懂了,用精了,用成大师了,自然把你的牛逼都外漏出来了。

 

原创粉丝点击