天天看点

struts springmvc 比较

1 前言

    这篇帖子应该发布在一个月前,因为iteye的发帖机制调整,问答积分的限制把俺堵在了大门外。

    写这篇文章是因为个人一直存在一些疑问:

    a. struts的性能到底怎么样?

    b. springMVC相比struts高多少?

    我这个人呢,有个缺点————总是要看到数据才甘心。可能是专家们被忽悠太多次,以至于心里有阴影了,嘿嘿。

2 测试准备

    2.1 测试工具:apache ab(简单实用,load runner就不搞了)

    2.1 系统环境:OS: Red Hat EL 5(64bit),  CPU: Intel Xeon E5310 1.60GHz(单颗4核cpu),  Mem: 4G

    2.2 软件环境:Tomcat 6.0.23, jdk 1.6.0_23, Struts2.2.3测试用war包, SpingMVC3.0.5测试用war包。

        2.2.1 tomcat jvm参数仅调整了堆大小为2G:JAVA_OPTS="$JAVA_OPTS -server -Xms2048M -Xmx2048M"

        2.2.2 测试的代码是从url简单传入1个参数,经过mvc的处理后渲染成html页面

3 测试过程

    3.1 部署两个war包到同一个tomcat下

    3.2 预热测试,先跑两次测试进行预热,已使结果更稳定

    3.3 通过浏览器请求拿到两个JSESSIONID以备使用,使用包含JSESSIONID的cookie,可以排除每次重新生成session造成的影响。

    3.4 测试并记录结果

4 测试结果

    4.1  ab参数 ab -n 10000 -c 10 

            RPS每秒处理的请求数     TPR平均响应时间(毫秒)

            struts2.2.3 spring3.0.5     struts2.2.3 spring3.0.5

    第一次 4308     6439         2.321     1.553

    第二次 4150     5873         2.409     1.703

    第三次 3904     6389         2.561     1.565

    平均值 4121     6234         2.430     1.607 

    4.2  ab参数 ab -n 10000 -c 10  -C JSESSIONID=XXXXXXXXXX

    第一次 3803     6560         2.629     1.524

    第二次 4221     6965         2.369     1.436

    第三次 4180     6683         2.392     1.496

    平均值 4068     6736         2.463     1.485

5 结果分析

    5.1 从TPS上看,sping比struts吞吐量高66%

    5.2 从TPR上看,sping比struts响应速度高40%

    5.3 我们根据TPR和TPS的数据得出如下坚定的结论:“大家尽可能的用spring吧,springMVC比struts快50%以上!”

6 个人见解

继续阅读