发新话题
打印

一位开发者对几个开发框架的性能评估

本主题由 phpres 于 2007-10-16 16:02 移动

一位开发者对几个开发框架的性能评估

有一位开发者在 FleaPHP 官方网站上提交了一份评估结果,是对 Code Igniter、CakePHP 和 FleaPHP,以及 JSP 的运行效率评估比较结果。

具体内容如下:
引用:
在此我想提问一些关于运行效率的问题,关于运行效率我在所有的php框架中都没能看到很好的解释.包括FleaPHP.我用了几款比较流行的开发框架进行性能测试,测试选用了FleaPHP,CodeIgniter,cake.cake运行非常缓慢.与相同操作的原始代码(不使用框架的原生代码)差距非常地大,我测试的环境是 windowns 2003,apache 2.0.55 ,php 5.2.2,测试机是笔记本, 1.6pm 2G RAM,模拟10并发 1000请求,测试3次,每次测试重起apache
结果如下:
原生代码
简单输出 每秒完成处理 462.30次/秒(平均)

CodeIgniter
简单输出 每秒完成处理 26.53次/秒(平均)

FleaPHP
简单输出 每秒完成处理 36.79次/秒(平均)

Cake
简单输出 每秒完成处理 8.41次/秒(平均)

如此大的差距是我原先不可想象的.相同结果的 java server 以及使用 spring 装配,使用 freemaker 作为view的差距不大.
java 测试环境,硬件相同,应用服务器 Resin 3.0.22 Pro, jrockit-jdk1.5.0,测试压力相同
java 测试结果

原始 Servlet
简单输出 每秒完成处理 1020.70次(平均)

spring 框架
简单输出 每秒完成处理 971.20次(平均)

不要说什么运行环境是 windows什么的.多于apache来说,worker 模式在 windows 下的运行地非常好.

在这里我不是想挑起 php与 java的争议,或者说是操作系统的争议.对我来说无论什么语言都是一样的,况且我开始使用php是1999年初,也算是php老用户了.2002年才正式的使用java做项目.
*nix以及类系统也是从1998年就开始使用了.
各有各的用途,只是目前php框架的混乱以及框架运行效率的低下.框架间的不兼容导致了现有大量项目中没有很好的表现.
对于框架来说,我看到的框架都已经"忘本".
以上一些也许过于偏激的语言希望不会引起什么争议,我只是把我一下肤浅的见解表达了一下.如果真想骂人的话,骂我就可以,千万别牵扯我的家属,呵呵呵.good luck.
路人甲:
引用:
首先对测试的家伙致敬,但是我想这决不是PHP和java的真正表现,Apache在win和linux环境下工作机制是不同的,由于java在和操作系统之间还有jvm的存在...

除了做过一次ASP.NET,从来没有用win来做过webserver,我很质疑这个测试结果的影响力。

对于框架,真没啥好说的,PHP的框架不是做的不够好,而是做的不够小,什么时候开始把框架都向小做向细节做,才是真正的发展
FleaPHP作者:
引用:
对于这位开发者的测试,我个人的意见如下:

1、测试的方式方法不正确:

例如原始php代码的简单输入这一项,如果只是一个 .php 文件,里面 echo 'hello,world';,那么肯定是最快的。而用框架来显示 hello, world 毫无疑问会慢很多倍。

之所以会出现这种情况,在于框架要完成许多额外的工作,例如:


  • 初始化运行环境(转义输入数据、分析输入参数等)
  • 载入一些基本的框架组件(对象管理服务、配置管理服务等)
  • 启用 MVC 模式


问题在于即便你的应用程序不采用任何一个框架,有些初始化工作仍然是少不了的。
我想绝大部分 PHPer 写的程序文件开头都会有 require('common.inc.php') 这样代码来载入一个基本的函数库,并且完成各种初始化工作。

因此,用一个简单的 echo 'hello, world' 脚本来和框架比较显示 hello, world 的速度显然是不科学的。

2、和 Java 对比

和 Java 相比,PHP 的运行速度是肯定更慢的(不管什么情况),那为什么还有那么多企业和开发者采用 PHP 呢?
因为 PHP 简单易学、开发效率高,而且调试、部署都很方便,所以非常适合快速开发。

但这不代表 PHP 就不能开发大型应用。可以看看 Yahoo 的许多应用,也是采用 PHP 的。而国内也有不少采用 PHP 的大型网站。
只要采用合理的架构和有效的优化措施,PHP 应用也可以获得理想的运行性能。

3、PHP 的开发框架真的一无是处?

首先,需要明确你采用框架的目的是什么。
如果是为了提高开发效率、可维护性,以及便于团队协作,那么开发框架是理想的选择。
如果你追求极端的性能表现,那么只有采用最传统的PHP脚本+HTML混合编码才行。就像 Discuz 论坛的代码基本上就是一个个全局函数,然后调用编译后的模板显示内容一样。

4、对于各个框架的实际运行效率

我不清楚测试时是如何配置各个框架的,但至少从 FleaPHP 看,只要简单的启用“部署”模式(也就是部署到生产服务器上正式运行的环境)就可以有明显的性能提高。因为默认情况下,FleaPHP 为开发阶段方便调试应用程序打开了许多辅助功能。

而且,几乎每一个框架都会默认载入一些文件。应该根据实际情况来设置,避免加载不需要的文件。

最终,如果重新进行更合理的测试,我想开发框架与传统过程式代码的性能差距不会有多大。
路人乙:
引用:
什么细节也没有,只是一堆每秒处理多少次这样的数据,我觉得讨论这样的测试毫无意义。

至于应不应该使用php框架,别人我不管,反正我觉得,有这样用起来趁手,能够提高开发效率,大大降低自己身体的劳累强度,运行效率还算可以接受的东西(如FleaPHP这样的框架),如果不用,就太对不起自己了。
阿花:
引用:
JAVA和PHP的问题我回避。


PHP的这三个框架都属于应用派,本身CakePHP的结构就是最复杂的,就其内部提供的功能而言也是最强大的。速度最慢不测也是能感受到的。只是希望这文章不要对初学者产生误导,从这个数据简单的得出对这个框架的认识。
XXX说:
引用:
不错。转帖这个文章的目的就是要让大家明白,单纯的 hello, world 测试并不能代表一个框架的整体性能表现。

举个很简单的例子:

A 框架可能基础部分要慢一点,但数据库操作却有可能比 B 框架快很多。
这样的话,如果你的应用程序进行大量数据库操作,那么选择A框架就要比选择B框架更合理。
XXXX说:
引用:
很遗憾,从这篇所谓的“测评”文章我看不出任何有用的结果(这种毫无科学性的“测评”行为本身就值得怀疑)。

我只知道,这个世界上想否定某些东西是非常容易的,你几乎可以100%找出其存在的缺陷。
但赞扬一件事物、肯定一件事物却又是非常的难。
XXXXX说:
引用:
测试方法,环境都有问题。详细的上面已经说了。

另外PHP在应用框架方面,由于解析执行的原因肯定不如JAVA在这方面有利,因此从根本上解决,只能看PHP本身的发展。

但我对于在实际中应用框架开发仍然比较看好。这是以后面对多变的需求中快速开发的根本。而在负载方面,我们可以对应用程序实际运行情况进行分析,将压力大的一面进行静态化处理来缓解。

例如,一般的程序都分前台与后台,前台静态化,后台采用框架快速开发。面对目前静态化页面对动态处理的不足,可以采取XSLT客户端生成网页,JS做页面界面加AJAX直接访问XML的方法来实现。

最后可能的网站程序结构会是
客户--->访问页面--->XSTL生成页面--->XSLT或JS读取XML数据<---生成XML数据岛<----PHP框架应用的后台

TOP

哈哈。。。。搞笑了。。。
看贴不回者......小心背后~

TOP

发新话题