为什么80%的码农都做不了架构师?>>>   

Java MVC框架性能比较 jsp、struts1、struts2、springmvc3

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

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

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

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

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

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

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

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

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

测试结果:

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

结论:

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

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

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

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

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

转载于:https://my.oschina.net/jlu100/blog/602238

Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 (转帖)相关推荐

  1. Java MVC框架性能比较

    Java MVC框架性能比较 - by zvane 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框 ...

  2. java mvc框架有哪些_常用的MVC框架有哪些

    展开全部 常用的MVC框架有JSP + servlet + javabean的模式e69da5e887aa3231313335323631343130323136353331333431373232. ...

  3. 从零开始实现一个简易的Java MVC框架(九)--优化MVC代码

    前言 在从零开始实现一个简易的Java MVC框架(七)--实现MVC中实现了doodle框架的MVC的功能,不过最后指出代码的逻辑不是很好,在这一章节就将这一部分代码进行优化. 优化的目标是1.去除 ...

  4. 从零开始实现一个简易的Java MVC框架(六)--加强AOP功能

    前言 在前面从零开始实现一个简易的Java MVC框架(四)--实现AOP和从零开始实现一个简易的Java MVC框架(五)--引入aspectj实现AOP切点这两节文章中已经实现了AOP功能并且引用 ...

  5. knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案

    knife4j knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量, ...

  6. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  7. Java——MVC框架

    本文禁止转载,仅用于个人学习! MVC框架结构: 操作步骤: 1.在计算机管理的服务中打开数据库的监听,我安的是oracle10g,在这里无法打开,于是在cmd当中打开:               ...

  8. ioc框架 java_从零开始实现一个简易的Java MVC框架(三)--实现IOC

    Spring中的IOC IoC全称是Inversion of Control,就是控制反转,他其实不是spring独有的特性或者说也不是java的特性,他是一种设计思想.而DI(Dependency ...

  9. 在Java中搭建一个简单的MVC框架

    搭建一个简单的Java MVC框架 一 . 前言 二. 代码实现 1. 思路分析 2. 代码实现 2.1 Controller注解 2.2 RequestMapping注解 2.3 UserContr ...

最新文章

  1. NC93设计LRU缓存结构
  2. long 雪花算法_雪花算法
  3. 聊聊hystrix的execution.isolation.semaphore.maxConcurrentRequests属性
  4. 1. ELK 之elasticsearch 简介、获取、安装
  5. android开发 RecyclerView 瀑布列表布局
  6. mysql表 c#实体类,创建基于MySQL表中的C#类
  7. python cnn 实例_基于CNN的纹理合成实践【附python实现】
  8. 查找特定的值(信息学奥赛一本通-T1110)
  9. ROS推荐链接:UNIX/LINUX专为初学者的教程和命令 http://www.ee.surrey.ac.uk/Teaching/Unix/
  10. 帝国php数据库备份,解决帝国cms帝国数据库备份王php5.3下500错误
  11. 【note】Java程序设计基础第五版(上)
  12. C语言学习之 数组,指针,字符串. (一)
  13. 「 英雄哪里出来 」算法博客阅读指引
  14. 画板html5代码,html5教程制作简单画板代码分享
  15. JUL配置文件进行相关配置
  16. #12304;#28404;#28404;#37329;#59257;#34701;#23458;#59257;#26381;#30005;#35805;#12305;
  17. A load persistent id instruction was encountered, but no persistent_load function was specified.
  18. python支持使用字典的键作为下标,Python 支持使用字典的“键”作为下标来访问字典中的值。...
  19. 《Oracle 10G 系统教程 中科院培训老师讲授》
  20. R语言入门——工作空间管理函数

热门文章

  1. 伍哥原创之豆荚商城商品搜索架构介绍
  2. asp.net mvc 与 asp.net结合(asp.net mvc 技巧)
  3. 局域网防雷电***实用解决方案
  4. 祝博客园里的所有朋友 新年快乐!
  5. 从别人那拷下来的几点Session使用的经验(转载)
  6. 人人都能学会的python编程教程11:定义函数
  7. [WUST2017]一组简单一点的题目(三) A - Calculate S(n)
  8. CSS3学习手记(1) 选择器
  9. 苹果手机微信上form表单提交的问题
  10. 动态代理--cglib