struts springmvc 比较

简介: 引用:http://mlw2000.iteye.com/blog/1072765?page=2#comments  评论参考 1 前言     这篇帖子应该发布在一个月前,因为iteye的发帖机制调整,问答积分的限制把俺堵在了大门外。

引用:http://mlw2000.iteye.com/blog/1072765?page=2#comments  评论参考

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
            RPS每秒处理的请求数     TPR平均响应时间(毫秒)
            struts2.2.3 spring3.0.5     struts2.2.3 spring3.0.5
    第一次 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 个人见解

    我们真的能从测试结果得出“sping比struts吞吐量高66%;响应速度高40%;springMVC比struts快50%以上”的结论吗?
    在整理好结果的第一个小时内,我也是这么认为的,但是我总觉得有不妥之处,以至于后来我推翻了自己之前的想法,原因其实很简单————我们选择了错误的测试用例。
    测试case只需要极其简单的运算,没有其他消耗系统资源的操作(比如db的存取):
    http://127.0.0.1:8080/struts2/example/hello-world.action?name=name
    http://127.0.0.1:8080/spring3/example?name=name
    对于这么简单的运算,struts及sping约等于空转状态,这个测试能得出的结果是”springMVC与struts的空转响应时间是1.5和2.5毫秒“。
    由此得出:如果我们的系统本身的响应时间超出300毫秒,那么采用springMVC与struts的任一个框架,对性能的影响都在1%左右。对于一个不是要求响应在10毫秒以内的系统,采用springMVC或者struts不会有本质的性能区别。

 

相关文章
|
7月前
|
安全 Java API
Struts2
访问web资源 1》使用servlet API解耦的方式,获取的方法较少   1.使用ActionContext,一个一个获取,效率不高   2.实现XxxAware接口(ApplicationAware,SessionAware.....)推荐,
25 0
|
设计模式 开发框架 安全
Struts,你为何死不悔改!
上篇文章《诡异的字符串问题。。。》的问题已经解决了,我一直相信「团队力量的重要性」,虽然我不能保证加入群的每一个人都是乐于分享的同学,但我始终群里的各位同学总会慢慢被我们这种乐于分享的群氛围所影响。就以上篇文章为例,群里的 Univechige 同学专门给 IntelliJ IDEA 官方发邮件寻求原因,这便是一个好的开端,我相信有各位同学的共同维护,后面群氛围会越来越好。下面给出 IDEA 官方的答复,见下图。
141 0
Struts,你为何死不悔改!
|
Web App开发 Java Apache
struts
运行流程 客户端浏览器通过HTTP请求,访问控制器,然后控制器读取配置文件,然后执行服务器端跳转,执行相应的业务逻辑,然后,在调用模型层,取得的结果展示给jsp页面,最后返回给客户端浏览器 组成部分 struts 视图 标签库 控制器 action 模型层 ActionFrom JavaBean struts maven 安装官网 : https://struts.
987 0
|
Web App开发 XML Java
JakartaEE Struts2使用
1. Struts2下载 解压后的目录结构如下: 图1.png 从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的: 操作(Actions...
969 0
|
Java 数据库连接
[Struts]HibernatePlugIn for Struts(转贴)
这个Plugin的作用是在Struts应用程序启动时进行hibernate的初始化操作,原文HibernatePlugIn for Struts,步骤很简单: 1、在struts-config.xml里增加: <plug-in className="org.
1145 0
|
SQL JavaScript 前端开发
|
Java 数据安全/隐私保护 开发者