Spring和Yii是Java和PHP语言各自的代表性框架。
对其demo程序做压力测试可以加深对PHP/Java两种语言之间差异性的理解,从而有助于做架构评估。
下面分别对Spring3的示范程序petclinic和Yii1.1.13的示范程序blog做了性能测试,
这两个程序都是简单的请求-〉少量数据读取处理-〉页面返回,属于同一轻量级别应用,是可以比较的。
ThinkPAD X1 Carbon
操作系统Windows 8(x64)
处理器Core(TM)-i5, 1.7GHz
内存(RAM) 4.0GB
固态硬盘128G
siege for windows,
SIEGE 2.74
1. Spring3 - petclinic framework sample
搭建petclinic测试环境步骤如下:
装好环境后,就可以把代码检出进行测试了,执行如下步骤:
git clone https://github.com/SpringSource/spring-petclinic.git
mvn tomcat7:run
一切正常的话,你可以通过浏览器访问 http://localhost:9966/petclinic/ ,会出现可爱的宠物狗
如果出现“找不到符号”请手动添加import;
如果遇到测试预期结果不正确,那么可能是中英文结果不匹配引起,先注释掉结果匹配语句
petclinic默认使用的是hsql内存数据库,把它改成使用mysql,需要在两个地方修改:
执行测试:
C:\Users\iefreer>siege -b -t30s http://localhost:9966/petclinic/vets.html
并发大致在160 trans/sec.
尝试非数据读取页面,大致在500 trans/sec。
2. Yii1.1.13 blog demo
安装了zend ce 5.5.0自带安装Apache service
更改httpd.conf,把document_root设置为blog目录,重启apache服务,在浏览器中访问:
http://localhost/index.php/post/index
应该出来Welcome!等几篇博客文章
执行测试:
C:\Users\iefreer>siege -b -t30s http://localhost/index.php/post/index
并发36.42 trans/sec,尝试开启关闭APC缓存(在main.php中添加cache component配置,post查询语句中添加cache启用查询缓存),
结果差不多在40 trans/sec,影响甚小。
再尝试测试非数据读取页面:
C:\Users\iefreer>siege -b -t30s http://localhost/index.php/about
并发大致在280 trans/sec
从默认配置执行结果,可以大致认为Spring3程序比Yii程序快2~4倍。
当然这里不讨论Spring(Java)/Yii(PHP)代码维护/发布的情况,Yii的代码修改/发布/调试-即改即得无需编译,显然要方便得多。
by iefreer
一篇有关春天和易PK的故事,献给自己36岁生日之夜,记录生命点滴