`
zwbill
  • 浏览: 33651 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java MVC框架性能比较

    博客分类:
  • Java
阅读更多

Java MVC框架性能比较

- by zvane

现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框架的项目访问速度,明显不如原来采用了struts1框架的项目快,带着这些疑惑,我对各类MVC框架的做了一个简单的性能分析比较,其结果应该说是基本符合预期的,可供大家参考。

 

测试环境:CPU:酷睿2 T5750,内存:DDR2-667 2GWeb容器:Tomcat6.0,最大线程数设置为1000,操作系统:WinXP-sp3

 

测试步骤:搭建6Web工程,如下:

1.JSP:不包含任何MVC框架,只有一个测试用的JSP页面。

2.struts1包含一个Action,不做任何逻辑处理,直接转发到一个JSP页面

3.struts2 JSP不包含Action,只包含测试JSP页面,直接访问该页面。

4.struts2 单例Action采用Spring来管理Struts2Action实例,并配置成单例模式。

5.struts2 多例Action采用Spring来管理Struts2Action实例,并配置成单例模式。

6.SpringMVC3采用Spring来管理Controller实例,包含一个Controller,不做逻辑处理,收到请求后,直接返回到一个JSP页面。

 

测试结果:

测试工程

请求数

并发数

总时间(s)

总时间(s)

总时间(s)

平均值(s)

Requests Per Second(每秒处理请求数)

JSP

2000

200

5.55

3.59

4.11

4.42

452.83

struts1

2000

200

6.77

3.83

7.00

5.86

341.03

struts2 JSP

2000

200

25.20

26.30

24.11

25.20

79.35

struts2 单例Action

2000

200

28.36

27.59

27.69

27.88

71.74

struts2 多例Action

2000

200

31.31

31.97

39.56

34.28

58.34

SpringMVC3

2000

200

7.16

7.50

4.27

6.31

317.09

 

说明:以上测试虽不是非常的精确,但基本能说明一定的问题。每个JSP页面和Action都不包含任何的业务逻辑代码,只是请求转发。每轮测试取三次总时间的平均值。所有工程的测试均全部完成并正常处理请求,没有请求拒绝情况发生。

结论:

1.JSP的性能应该最高,这不难理解,JSP被编译成Servlet后,没有任何多余的功能,收到请求后直接处理。(这也验证一句经典的话:越原始效率就越高。

2.struts1的性能是仅次于纯JSP的,由于struts1采用单例Action模式,且本身的封装相比struts2应该说简单很多,虽然开发效率不如struts2,但已经过多年的实践考验,性能稳定高效。

 

3.相比来说struts2的性能就比较差了,这不难理解,struts2之所以开发方便,是由于采用值栈、OGNL表达式、拦截器等技术对请求参数的映射和返回结果进行了处理,另外还采用大量的标签库等,这些都无疑增加了处理的时间。因此降低了效率。在我们实际的项目中,我测试本地工程访问每秒处理请求数只能达到35左右,应该说还有不少可优化的空间。

 

4.很多人认为struts2性能差是因为它的多例Action模式导致的,但我们采用spring管理struts2Action,并设置按单例方式生成Action实例后,发现其性能有所提高,但并不是很明显。由此可见,多例Action模式并不是struts2性能瓶颈所在。另外,我们在struts2中采用JSP方式访问,发现其性能依旧和没有采用任何MVC框架的纯JSP之间存在好几倍的差距,这又从另一个侧面证实了我们刚才得出结论,struts2性能的瓶颈不在于它的多例Action模式。       

       

5.SpringMVC3的性能略逊于struts1,但基本是同级别的,这让人眼前一亮,springMVC有着不比struts2差的开发效率和解耦度,但性能却是struts2的好几倍,这让我们灰常振奋,SpringMVC无疑又是项目开发的一个好的选择。唯一的问题就是,目前国内使用面还不太多,各方面的参考资料相对较少,上手的话可能要稍微难点。

 

36
1
分享到:
评论
30 楼 zhulongxing_sz 2012-03-19  
如果你了解了 jsp 和 servlet 的工作机制,那么对你来说,其实所有的 MVC 框架学习起来都不难,包括 struts2 和 Spring MVC···
        另,Spring 3.X MVC 无论在框架设计、扩展性还是灵活性等方面都全面超越了 Struts、WebWork 等 MVC 框架,已经成为 MVC 的领跑者了···
29 楼 hngmduyi 2011-12-12  
楼主是用什么测试工具啊??
28 楼 zwbill 2011-07-23  
好久没来,居然有这么多回复。
其实,这个测试,怎么说呢?只是一个参考性的测试把。
但我认为还是有点意义的。

最近用了Spring MVC3做了一个框架Demo,渐渐的发现确实很好用。
各种用法非常灵活。

记得2年前,去阿里面试过,最后一面人事面可能出了点问题,被HR给唰了。
唉,往事不堪回首。现在,已经回老家武汉工作了。

后来,和另一个朋友交流时,他们公司做的中国移动一个省短信平台项目,
控制层也用的SpringMVC3,只是View层用的velocity。
他们的架构也是经过了第三次重新设计,决定采用SpringMVC3的。

所以,我感觉,SpringMVC已经开始流行起来了。
当然,这并不是说struts2就不好用了,struts2开发起来还是相当顺手的。
我们公司做的好多平台都是基于struts2的。

不过,我觉得如果有机会,还是应该试一试新技术。
感谢各位讨论。
27 楼 lyjilu 2011-05-09  
想一下应该都清楚,jsp是单纯的调用,中间没有其它的,而struts1 和spring mvc都是通过servlet转发实现功能,所以访问性能差距不大,struts中间处理东西太多,速度就慢了。
前段时间用了下springmvc,感觉和struts1很类似,但比struts1好很多,如果使用注解,代码想到简洁,但现在解释springmvc注解的资料很少。。。
26 楼 mlmllyf 2011-05-07  
阿里用Spring MVC 你说哪个好
25 楼 skzr.org 2011-05-04  
你和我的测试结果差别还是蛮大的
core2 P8400, 4G mem
MVC测试:
tomcat maxThread=10;使用ab -n 10000 -c 20 测试一个helloworld control!
  spring3 mvc访问jsp速度高达5、6K/s
  spring3 mvc采用freemarker速度高达5、6K/s
  struts2(关闭log,关闭开发模式) mvc最高还达不到2K/s
24 楼 raiha 2011-04-29  
你用什么方法测试的?
struts2可以清理掉一些不用的拦截器再试试
23 楼 rentianchou 2011-04-29  
energykey 写道
框架是为了简化开发,提高开发效率而诞生的。

是这样的
22 楼 energykey 2011-04-28  
框架是为了简化开发,提高开发效率而诞生的。
21 楼 vtrtbb 2011-04-28  
楼主怎么不试试jsf,seam,turbie呢?

另外好像struts2 应该用velocity或者freemaker做表现层比较好吧
20 楼 SeanHe 2011-04-27  
rentianchou 写道
rentianchou 写道
spring MVC 上手很简单



至少比struts2的学习曲线要低很多

同意,springmvc 3看一下官方的showcase 源码,就能解决80%以上的问题了。比理解struts2要简单很多。
19 楼 rentianchou 2011-04-27  
rentianchou 写道
spring MVC 上手很简单



至少比struts2的学习曲线要低很多
18 楼 rentianchou 2011-04-27  
spring MVC 上手很简单
17 楼 C.T 2011-04-26  
这样单纯的验证其实意义不大,在实际当中并不会没有任何业务逻辑,而且还要考虑开发的效率,维护成本,其他等等。当然,如果只是简单的作一个测试,还是不错的,关键在于动手
16 楼 C.T 2011-04-26  
4.struts2 单例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。

5.struts2 多例Action:采用Spring来管理Struts2的Action实例,并配置成单例模式。

这里有误吧
15 楼 yin_bp 2011-04-24  
14 楼 yin_bp 2011-04-24  
白糖_ 写道
spring mvc很快会成为主流

如果你试用过国产的bbossgroups框架最新版本3.1的话,估计会发现国内也出现了可以成为主流的mvc框架的东东。
13 楼 白糖_ 2011-04-24  
spring mvc很快会成为主流
12 楼 szcs10138456 2011-04-24  
要么高性能 要么高效率 为什么要用中间产物呢?何不要性能高效率呢
11 楼 ricoyu 2011-04-23  
hyhai7 写道
如果仅仅只从访问速度去理解这些框架,其实是很愚蠢的事情,举一个非常简单的例子来说:

struts1的action是不安全的,每次请求只是在复用一个action对象,这就早就了性能不稳定的现象,当然访问速度快!

struts2的action是安全的,每次请求都会重新产生一个对象负责该请求,采用原型模式设计。

从这一点来说,当用户群体非常庞大的时候,你选择哪个?

你这样测试的目的是什么?

简单的说没有任何意义!!!

struts1的action你要他安全做什么? struts1的action确实每次都是在复用一个action对象, 但struts1的action跟struts2的action职责不同, 他是不带页面提交的数据的, 既然这样, 为什么不可以是单例的? 你要他所谓的安全做什么?

相关推荐

    mvc框架性比较

    **Java MVC 框架性能比较** 在当前的软件开发领域,MVC(Model-View-Controller)架构模式被广泛应用于构建Web应用。Struts、Spring MVC等是主流的MVC框架,它们提供了丰富的功能,简化了开发流程,但也带来了性能...

    MVC_Mysql.rar_java MVC_java MVC mysql_java 案例_mvc_mvc框架

    总的来说,这个案例是一个实用的教程,帮助开发者了解如何在Java项目中运用MVC框架来设计和实现一个Web应用,同时与MySQL数据库进行有效交互,充分利用连接池提高性能。通过学习和实践这个案例,开发者能够增强自己...

    JAVA_MVC框架编写的学生管理系统

    在IT行业中,Java MVC框架是开发企业级应用的常用技术之一,特别适合构建大型、复杂的Web应用程序。在这个项目中,我们将深入探讨如何在Eclipse环境中使用Java MVC框架来开发一个学生管理系统,这是一个非常适合大学...

    Spring MVC框架示例

    Spring MVC 是一款强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它作为Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,简化了处理HTTP请求和响应的过程。本示例项目是作者...

    java自定义mvc框架(数据库操作博客资源)

    在这个自定义的Java MVC框架中,我们重点探讨了如何实现数据库操作,特别是使用MySQL数据库,并且与`PreparedStatement`相关联。`PreparedStatement`是Java JDBC提供的一种预编译SQL语句接口,可以提高数据库访问的...

    简单的MVC框架例子

    **简单的MVC框架例子** 在Web开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,它将应用程序的结构分为三...在实际项目中,更复杂的MVC框架,如Spring MVC,会提供更丰富的功能和更好的性能优化。

    talent mvc(最简约的Java MVC框架)

    talent MVC是一款设计简洁、易于理解和使用的Java MVC框架,它旨在为开发者提供一种轻量级的解决方案,以提高开发效率,降低项目复杂度。这款框架的核心理念是通过最小化配置和简化组件交互来实现高效开发。 在Java...

    一个轻量级的JAVA MVC框架和实例代码.rar

    【标题】"一个轻量级的JAVA MVC框架和实例代码.rar"揭示了这是一个关于Java编程领域的资源,专注于轻量级的MVC(Model-View-Controller)框架实现。MVC是一种设计模式,常用于构建可维护性和扩展性良好的Web应用程序...

    java mvc架构的程序

    在Java MVC框架中,Model代表业务逻辑层,它处理数据和业务规则。在Java中,这通常通过实现JavaBean或使用Spring框架的Bean来完成。Model与数据库进行交互,获取和存储数据,然后将这些数据传递给Controller。 ...

    MVC框架,TOMCAT服务器,JAVA在线通讯录

    通过以上步骤,我们可以构建一个基于MVC框架、Java编程、MySQL存储、并在Tomcat服务器上运行的在线通讯录系统。这个系统不仅能够提供基本的联系人管理功能,还具有良好的扩展性,可以适应更多的业务需求。

    为java_web项目添加spring_MVC框架(JSTL表达式)

    标题中的“为java_web项目添加spring_MVC框架(JSTL表达式)”指的是在Java Web开发中集成Spring MVC框架,并利用JSTL(JavaServer Pages Standard Tag Library)进行页面表达式的处理。Spring MVC是Spring框架的一个...

    使用MVC框架开发租房网站10-12

    在北大青鸟的ACCP6.0课程中,这一部分涵盖了第10到12章节的内容,旨在帮助学员掌握Java MVC框架的核心概念和实际应用。 **第10章:理解MVC架构** 在这一章,我们将介绍MVC模式的基本概念。Model代表应用程序的数据...

    java mvc实现物流资源管理系统

    1. **Java MVC 框架**:Java MVC框架如Spring MVC或Struts2,用于构建系统的后端。MVC模式将应用程序分为三个主要部分:模型(Model)负责数据的处理和业务逻辑,视图(View)负责显示数据,控制器(Controller)...

    mvc框架例子该例子主要讲述了怎样创建mvc框架以及怎样用mvc操作数据库该希望对初学mvc的人有所帮助欢迎大家下载分享

    本例子将详细解析如何创建一个MVC框架,并展示如何通过该框架与数据库进行交互。** **一、MVC框架的基本概念** 1. **Model(模型)**: 模型层是应用程序的核心,负责处理业务逻辑和数据管理。它与数据库或其他数据...

    nutz搭建的MVC框架

    本篇文章将详细介绍如何利用Nutz搭建MVC框架,并探讨其在实际开发中的优势。 **一、Nutz MVC框架介绍** Nutz MVC是Nutz框架的一部分,它基于Servlet容器运行,通过注解驱动,简化了Java Web应用的开发流程。Nutz ...

    Java进阶之手写MVC框架共12页.pdf.zip

    【Java进阶之手写MVC框架共12页.pdf】 在Java开发中,MVC(Model-View-Controller)架构模式是一种广泛应用于构建Web应用程序的设计模式。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器...

    mvc框架练习代码

    【标题】"mvc框架练习代码"涉及的知识点主要围绕着Web开发中的Model-View-Controller(MVC)架构模式,这是一种广泛应用于Java后端开发的设计模式。在这个项目中,开发者可能在尝试理解和实践如何将业务逻辑、数据...

    javaMVC网上购物平台

    在这个“javaMVC网上购物平台”项目中,开发者使用了MVC模式来构建一个适合初学者学习的网上购物系统。 1. **MVC架构详解** - **Model(模型)**:负责处理业务逻辑和数据管理。在这个项目中,模型层可能包含了...

    使用MVC框架开发租房网站12章 贯穿案例 阶段小测试1

    在本课程"使用MVC框架开发租房网站12章 贯穿案例 阶段小测试1"中,我们将深入学习如何运用北大青鸟ACCP6.0的教育体系,结合Java编程语言和MVC(Model-View-Controller)架构模式来构建一个功能完备的租房网站。...

    开源mvc框架源码

    5. **拦截器**:在MVC框架中,拦截器可以拦截控制器方法的调用,进行预处理和后处理,例如登录验证、性能监控等,增强了系统的可定制性和可扩展性。 6. **REST格式MVC**:RESTful设计原则强调使用HTTP方法(GET、...

Global site tag (gtag.js) - Google Analytics