Spring3和Yii示范程序性能初探

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测试环境步骤如下:

  • 安装jdk1.7.0_21
  • 安装Eclipse Kepler Release
  • 安装插件m2e
  • 安装github for windows
  • 安装maven到C:\Program Files\apache-maven-3.1.0
  • 配置maven home/java home环境变量,在系统变量Path中添加%M2_HOME%/bin, %JAVA_HOME%/bin

装好环境后,就可以把代码检出进行测试了,执行如下步骤:

    git clone https://github.com/SpringSource/spring-petclinic.git
    mvn tomcat7:run
一切正常的话,你可以通过浏览器访问  http://localhost:9966/petclinic/ ,会出现可爱的宠物狗

如果出现“找不到符号”请手动添加import;

如果遇到测试预期结果不正确,那么可能是中英文结果不匹配引起,先注释掉结果匹配语句

petclinic默认使用的是hsql内存数据库,把它改成使用mysql,需要在两个地方修改:

  • 数据库访问配置文件src/main/resources/spring/data-access.properties
  • 项目管理文件spring-petclinic/pom.xml,修改其中的database dependency

执行测试:

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岁生日之夜,记录生命点滴

你可能感兴趣的:(spring,yii,性能测试)