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 结束语
欢迎直接指出问题.
ps:拒绝人身攻击(程度较轻可忽略).
分享到:
相关推荐
Struts1强调使用Form Bean来封装请求参数,通过ActionForm与Action之间传递数据,实现了表现层和业务层的分离。 **Struts2原理:** Struts2是在Struts1的基础上发展起来的,它融合了WebWork框架的许多特性。Struts2...
- **性能对比**:由于 SpringMVC 的单例模式和更轻量的设计,理论上其性能优于 Struts2。 #### SpringMVC 执行流程 SpringMVC 的执行流程如下: 1. **请求处理**:用户发起 HTTP 请求至 DispatcherServlet。 2. **...
性能优秀:** SpringMVC的设计理念使得开发者能够轻松编写出高性能的应用程序,这一点在与Struts2的对比中尤为明显。Struts2虽然功能丰富,但由于其复杂的架构(如值栈、OGNL表达式、标签库等)可能会导致性能下降...
四、Spring MVC与Struts2对比 尽管Struts2是一个成熟的框架,但Spring MVC因其简单易学、高性能和灵活性成为许多开发团队的选择。Spring MVC的注解配置减少了XML配置的复杂性,而Struts2的值栈和OGNL可能导致性能...
11. SpringMVC与Struts2对比:分析两种MVC框架的优缺点,理解其工作原理差异。 12. 性能优化:探讨缓存机制,如二级缓存的使用,提高系统性能。 以上实例涵盖了SpringMVC和Hibernate整合的各个方面,对于初学者和...
作者推荐了SpringMVC作为当前最优秀的MVC框架之一,并与Struts2进行了比较分析,认为SpringMVC在性能上超越了Struts2,并且在易用性和灵活性方面具有明显的优势。 接下来,教程中的核心类与接口部分将介绍SpringMVC...
- **Struts vs SpringMVC**:虽然两者都是基于MVC模式的Web框架,但是SpringMVC在配置灵活性、性能优化等方面具有明显优势。SpringMVC更加强调约定优于配置的原则,使得开发效率更高。 - **Spring vs SpringMVC**:...
### SpringMVC详解 #### 一、SpringMVC概述 **SpringMVC**是Spring框架的一个模块,...通过对SpringMVC底层架构、工作流程及与其他框架的比较分析,我们可以更好地理解其优势所在,并在实际项目中灵活运用这些知识。
- **JSP与ASP对比**:JSP本质上是编译后的Servlet,而ASP使用的是未编译的脚本语言,两者在运行效率和安全性上有显著差异。 **Model1与Model2**: - **Model1**:JSP充当了View和Controller的角色,适用于简单的...
Struts 是一个开源的Java Web框架,由Apache软件基金会维护,它主要被用来构建基于MVC(Model-View-Controller)设计...同时,了解Struts与其他框架(如Spring MVC)的比较,也有助于我们选择最适合项目的解决方案。
在运行性能方面,JSP+Servlet组合的性能通常最高,其次是Struts 1,接着是Spring MVC,而Struts 2的性能相对较低,特别是当使用OGNL和值栈时。然而,在开发效率上,这些框架的表现却与性能表现相反,Spring MVC和...
#### 七、SpringMVC与Struts2的比较 1. **入口差异**:SpringMVC的入口是Servlet,而Struts2是Filter。 2. **性能差异**:SpringMVC通常比Struts2稍快一些,因为SpringMVC是基于方法的设计,而Struts2是基于类的...
Spring MVC是基于Java的开源MVC框架,它用于简化Web应用开发,是Spring框架的一部分。...本文作者赵磊还撰写了一篇比较Spring MVC与Struts 2以及Servlet的文章,感兴趣的话可以参考其中关于性能对比的测试结果。
此外,通过比较Spring MVC与Struts2、Servlet等其他MVC框架,本教程也强调了选择Spring MVC的理由,例如学习成本低、性能优秀、扩展性好等。通过了解这些知识点,开发者可以更有效地利用Spring MVC进行Web开发,提升...
Beetl的附录部分列出了函数、格式化函数、标签、与Freemarker的功能对比以及性能比较等信息。 Beetl的扩展包功能强大,可以自定义函数和格式化函数,以及使用标签等。Beetl还提供了宏支持和空格处理方法。 Beetl的...
4. **SSH(Struts2+Spring+Hibernate)与SSM的比较**:SSH是早期的Java Web开发框架组合,其中Struts2负责控制流程,Spring提供DI和AOP,Hibernate处理ORM。而SSM则用SpringMVC替代了Struts2,更轻量级且易于配置,...
- 一般来说,开发效率与性能成反比,Spring MVC 和 Struts2 在开发效率上相当。 #### 基于 Spring 2.5 的 XML 配置项目实践 **项目搭建步骤**: 1. **建立 Web 项目**:首先在开发环境中新建一个 Web 项目。 2. *...
【Struts2与SpringMVC对比】 Struts2是基于Action的MVC框架,配置相对繁琐。SpringMVC是Spring的一部分,依赖注入强大,配置简洁,性能较好。 【SpringMVC核心组件与运行流程】 核心组件包括DispatcherServlet、...
它支持多种web框架的整合,如SpringMVC、JFinal、Struts、Nutz、Jodd和Servlet等,并能够单独开发和测试模板,无需M和C部分的参与。Beetl也支持自定义方法、格式化函数、虚拟属性、标签和HTML标签,并允许自定义占位...