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. Yii的OO很纯粹
里面各种接口、类、继承、扩展,显得很庞大,丰富的面向对象的思想可以搭建一个非常成熟的系统,并且根据需求做出优秀的功能扩展。
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这种大家都认为比较大型的语言,还是有很丰富的应用位置。
别老是在讨论一种语言,一种框架,只要你把一样东西用懂了,用精了,用成大师了,自然把你的牛逼都外漏出来了。
- Ci与yii的比较与性能分析
- ci+smarty与Zend的比较
- Array的push与unshift方法性能比较分析
- 常用String字符串拼接的性能比较与分析
- JQuery for与each性能比较分析
- JQuery for与each性能比较分析
- KAZE 算法原理与源码分析(四)KAZE特征的性能分析与比较
- 框架CI与YII之个人见解1
- thinkphp与Yii比较,框架之间的选择
- Thinkphp与CI的区别
- OpenCV学习笔记(30)KAZE 算法原理与源码分析(四)KAZE特征的性能分析与比较
- 8.红黑树的定义,红黑树的性能分析和与平衡二叉树的比较
- 性能的比较:数组与ILIST
- SQL与Oracle、DB2的性能比较
- Zend_Db 与 Adodb 的性能测试比较
- asp 与.net的性能比较
- foreach与for的性能比较
- ARM7 与 Cortex-M3的性能比较
- PowerDesinger连接mysl
- 从30岁到35岁:为你的生命多积累一些厚度
- 并行操作(并行Query和DML)以及监控
- oracle导入txt数据文件--sql语句
- Oracle 使用lock_sga和pre_page_sga参数保证SGA常驻物理内存
- Ci与yii的比较与性能分析
- 2012 OpenCV新书下载--Master OpenCV with Practical Computer Vision Projects
- MySQL优化
- 两个flash图表控件对比:AnyChart和FusionCharts
- 杭电OJ——1465 不容易系列之一
- POJ 3440
- LibSVM学习(一)——初识LibSVM
- 2012总结--第10篇--工作篇
- hdu 2544最短路 Floyd算法