PHP Framework MVC Benchmark 基准测试

2011-07-08 14:41:15 Tech Views(7683)

Case

测试 MVC 中的 Router -> Controller -> Viewer, 输出 "Hello World" 简单页面,测试 MVC 在理想环境、简单逻辑、框架空载下的性能指标。

3 项指标

1) 在 index.php 中使用 microtime() 和 memory_get_usage() 粗略取得执行时间,内存占用情况
2) 使用 Facebook XHProf 扩展取得详细的资源占用情况,代码执行的 function map
3) 并发测试

硬件环境:

CPU: Intel Core i5 750 (2.67GHz x4)
RAM: 4GB

软件环境:

Debian 6.0.2 x86_64 (2.6.32-5-amd64)

apache 2.2.16
mpm-prefork
mod-php5

php 5.3.6
php-apc 3.1.3p1 (全局统一开启APC支持)

测试的框架清单:

* zf: Zend Framework
Site:    http://framework.zend.com
Ver:      1.11.7

* ci: CodeIgniter
Site:    http://codeigniter.com/
Ver:      2.0.2

* yii: Yii Framework
Site:    http://www.yiiframework.com/
Ver:      1.1.8

* yaf: Yet Another Framework in PHP Extension
Site:    http://code.google.com/p/yafphp/
Ver:      2.0.1

* micromvc: MicroMVC
Site:    http://www.micromvc.com/
Ver:      3.1.0

测试代码用例:

https://github.com/eryx/labs/tree/master/php-framework-benchmark

测试结果:
1. 粗测: 内存占用,响应时间
* zf: Zend Framework

* ci: CodeIgniter

* yii: Yii Framework

* yaf: Yet Another Framework in PHP Extension

* micromvc: MicroMVC

* all: 汇总对比
内存消耗

执行时间 (毫秒)

2. XHProf: 执行详情

* zf: Zend Framework
执行摘要:

执行详图:

* ci: CodeIgniter
执行摘要:

执行详图:


* yii: Yii Framework
执行摘要:

执行详图:

* yaf: Yet Another Framework in PHP Extension
执行摘要:

执行详图:

* micromvc: MicroMVC
执行摘要:

执行详图:

* all: 汇总对比
函数调用量

3. 并发测试

ab -c 100 -n 30000

ab -c 200 -n 50000

总结: 天下武功,唯简不破

--------------------------------------------
@2011-12-01   The last update of Testing:

PHP Framework MVC Benchmark - v20111201

--EOF--

Comments

gaoxiaoguang

哈哈, 唯快不破! 简化也是为了快。

2011-07-08 16:13:56

lanbo

XHProf —— 很震撼。

2011-07-08 16:23:43

力童

最快的一定不是这些开源的代码~开源的代码为了适应各种安装环境,必然存在过多的环境监测和繁重的功能.

可以尝试通过ktrace或者strace,check一下system call,会发现其实降低性能的就是require或者include

推荐这篇文章,来自php之父,simple is hard , http://talks.php.net/show/froscon08/

2011-07-19 18:44:41

rui

"simple is hard" 赞

2011-07-20 11:04:46

samshuai

zend framework你是用的自动加载么?自动加载的话,慢就是正常的了.

2011-11-06 00:43:07

CFC4N

呵呵,计划在生产环境使用yaf了。

2011-11-08 22:03:41

laruence

能基于Yaf 2.1的结果重新弄一个测试对比么?   嘿嘿, 多谢多谢.

2011-11-25 18:16:39

guest

选择yaf了

2012-11-14 13:35:29

guest

我想说这样的简单对比有意义么,只能是简单的参考
这里只是简单的输出 甚至还没有渲染视图,其次每个框架的核心类代码质量不一,如果真要对比 是非常困难的。 这里只是一个小参考。 实际项目从性能,开发速度等做综合还是比较喜欢Yii。yaf终将不能成为主流

2013-10-29 11:06:19

guest

请问上面那个执行详图是怎么出来的?
用软件生成吗?还是自己用工具做的啊?看着挺好的

2014-01-03 14:47:35

eryx

to 楼上: 使用 XHProf 自动生成

2014-01-03 22:13:12

Leave a Comment

Name
Content
Verification
Type the characters you see in the picture above