阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Spring MVC 和Struts2的性能比较

Posted on 2012-02-09 22:00  阳光VIP  阅读(174)  评论(0编辑  收藏  举报

Spring MVC 和 Struts2 是现在比较流行的 java web MVC 框架。这两个框架都有广泛的应用。至于两个框架的优劣,众说纷纭,这里我也不想搀和到争论之中。我所关注的是两个框架的性能如何。最近利用 ApacheBench 做了一下测试。结果显示,两者之间的性能相差不大, Spring MVC 并没有绝对的优势。

 

我的测试环境是在 HP 一台服务器上进行的。这台服务器拥有 Intel(R) Xeon(R) CPU           E5530  @ 2.40GHz 四枚。每个 CPU 四个核。 16G 内存。 64bit Red Hat Enterprise Linux Server release 5.4 操作系统。

 

Web 服务器采用 tomcat 7.0.12, 未做特别的优化,只是将 Connector 的 protocol 换成 Http11NioProtocol 的处理方式 :

<Connector executor="tomcatThreadPool"

               port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

                maxThreads="1000" minSpareThreads="50"

               acceptCount="1000"

 

               connectionTimeout="20000"

               redirectPort="8443" />

 

 

为了避免数据库的操作对测试的影响,测试用的 Web 应用程序都只是一个简单的  Hello world 程序。 Spring Helloworld 程序通过 Annotation 定义了一个 Controller 类,设置了一个 message, view 是一个 jsp 页面,用来显示这个 message 。 Struts2 Helloworld 程序实现了一个 Action, 里面定义了一个 message, 一个 jsp 页面用来显示这个 message 。 总之,这两个程序逻辑基本相同,程序简之又简。

作为比较,每次测试时还测试 tomcat root 下的 index.jsp 文件,用以和使用 Spring/Struts2 框架的应用程序进行比较。因为 index.jsp 文件 byte 数要比这两个框架的应用程序大的多,关于 ROOT 的测试数据仅供参考。

 

测试时发现针对同一框架应用相同的测试方法,得到的测试结果也不尽相同。多多少少有 0.01ms 的误差。

 

Spring MVC 的版本是: 3.1.0.M1

Struts2 的版本是: 2.2.3

 

下图是测试结果比较:

 

从图上看出, spring,struts2 和 root 线基本重合。考虑到测试结果的误差,基本可以看作两者在性能上并没有太大的差别。