论坛首页 Java企业应用论坛

struts2的性能为什么这么差,有性能测试截图

浏览 54896 次
精华帖 (2) :: 良好帖 (10) :: 新手帖 (0) :: 隐藏帖 (12)
作者 正文
   发表时间:2010-05-31   最后修改:2010-06-01
最近觉得struts2性能感觉好差,然后就对struts2和springMVC3分别作了以下性能测试,结果太让人吃惊了!
机器配置是 T6600 + 2G内存

执行一条最简单的查询语句,500线程
select * from folder where fid = '1' order by orderNum

struts2 + spring3 + hibernate 的测试结果



struts2 + spring3 + mock对象的测试结果




spring3 MVC + hibernate 的测试结果




最后是spring3 MVC + jdbc 的测试结果



根据最后两种情况可以看到 hibernate 对性能的损失尚可接受,但是struts2的性能为什么和 spring3 MVC 差这么多 -_-b

最后附上struts2官方的helloWorld例子程序的测试结果





性能也不容乐观。。。。。。
这个是官方的helloworld例子使用的jar包如下
<dependencies>

		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>2.1.8.1</version>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.14</version>
		</dependency>

	</dependencies>


然后是我的 struts.xml 配置文件,log 也已经设置到 ERROR 级别
<struts>

	<constant name="struts.devMode" value="false" />

	<package name="basicstruts2" extends="struts-default">

        <!-- If no class attribute is specified the framework will assume success and 
        render the result index.jsp -->
        <!-- If no name value for the result node is specified the success value is the default -->
		<action name="index">
			<result>/index.jsp</result>
		</action>
		
		<!-- If the URL is hello.action the call the execute method of class HelloWorldAction.
		If the result returned by the execute method is success render the HelloWorld.jsp -->
		<action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
			<result name="success">/HelloWorld.jsp</result>
		</action>

	</package>

</struts>


  • 大小: 11.6 KB
  • 大小: 13.2 KB
  • 大小: 11.6 KB
   发表时间:2010-05-31  
个人对Struts 2 没啥好感, Spring MVC倒是简单快捷
0 请登录后投票
   发表时间:2010-05-31  
一个建议:为了分离影响因素,后台不要用hibernate,避免框架整合hibernate的调整差异影响测试。
写个返回固定结果的Mock替换hibernate再压吧。
如果仍然有类似的差距,说明性能差异在MVC。如果差距大有不同,还是查查是不是整合的问题为好。
0 请登录后投票
   发表时间:2010-05-31  
本人觉得struts2性能差是正常的,因为struts2的Action对象是Prototype类型的,而且分离Servelt API时大量的用到Java的反射机制,Java的发射恰恰又是非常影响性能。
0 请登录后投票
   发表时间:2010-05-31  
springmvc 的架构不太熟悉,但struts2 的性能和springMVC 的相比差这么多出乎我的意料。。有时间研究下SpringMVC看看。。

期待有更详细的测试。。不大相信Struts2的性能会相差这么多。
0 请登录后投票
   发表时间:2010-05-31   最后修改:2010-05-31
miaow 写道
一个建议:为了分离影响因素,后台不要用hibernate,避免框架整合hibernate的调整差异影响测试。
写个返回固定结果的Mock替换hibernate再压吧。
如果仍然有类似的差距,说明性能差异在MVC。如果差距大有不同,还是查查是不是整合的问题为好。


有空按照你的建议试试看 , 但是我用 spring MVC + hibernate 和 spring MVC + jdbc 这两种情况性能差别尚可接受。说明hibernate对性能影响比较小
0 请登录后投票
   发表时间:2010-05-31  
一条简单的sql

能看出struts2 和 springMVC 的差别吗?

struts2 springMVC 和数据库操作有关系么?

0 请登录后投票
   发表时间:2010-05-31  
wy19280469 写道
一条简单的sql

能看出struts2 和 springMVC 的差别吗?

struts2 springMVC 和数据库操作有关系么?



已经加上了 struts2 + spring 用mock对象的测试结果,没有连接数据库,情况一样很差!!

不管是不是简单的sql,同样的操作,其他条件都一样,只有使用web框架不一样 struts2 和 springMVC 性能差别很大!
0 请登录后投票
   发表时间:2010-05-31  
性能差木有关系,只要能满足要求即可
0 请登录后投票
   发表时间:2010-05-31  
我建议把各自导入的包放进来看看,struts2基础包和放了plugin后的性能差别是很大的。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics