Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 (转帖)
为什么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 (转帖)相关推荐
- Java MVC框架性能比较
Java MVC框架性能比较 - by zvane 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框 ...
- java mvc框架有哪些_常用的MVC框架有哪些
展开全部 常用的MVC框架有JSP + servlet + javabean的模式e69da5e887aa3231313335323631343130323136353331333431373232. ...
- 从零开始实现一个简易的Java MVC框架(九)--优化MVC代码
前言 在从零开始实现一个简易的Java MVC框架(七)--实现MVC中实现了doodle框架的MVC的功能,不过最后指出代码的逻辑不是很好,在这一章节就将这一部分代码进行优化. 优化的目标是1.去除 ...
- 从零开始实现一个简易的Java MVC框架(六)--加强AOP功能
前言 在前面从零开始实现一个简易的Java MVC框架(四)--实现AOP和从零开始实现一个简易的Java MVC框架(五)--引入aspectj实现AOP切点这两节文章中已经实现了AOP功能并且引用 ...
- knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案
knife4j knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量, ...
- java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)
原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...
- Java——MVC框架
本文禁止转载,仅用于个人学习! MVC框架结构: 操作步骤: 1.在计算机管理的服务中打开数据库的监听,我安的是oracle10g,在这里无法打开,于是在cmd当中打开: ...
- ioc框架 java_从零开始实现一个简易的Java MVC框架(三)--实现IOC
Spring中的IOC IoC全称是Inversion of Control,就是控制反转,他其实不是spring独有的特性或者说也不是java的特性,他是一种设计思想.而DI(Dependency ...
- 在Java中搭建一个简单的MVC框架
搭建一个简单的Java MVC框架 一 . 前言 二. 代码实现 1. 思路分析 2. 代码实现 2.1 Controller注解 2.2 RequestMapping注解 2.3 UserContr ...
最新文章
- NC93设计LRU缓存结构
- long 雪花算法_雪花算法
- 聊聊hystrix的execution.isolation.semaphore.maxConcurrentRequests属性
- 1. ELK 之elasticsearch 简介、获取、安装
- android开发 RecyclerView 瀑布列表布局
- mysql表 c#实体类,创建基于MySQL表中的C#类
- python cnn 实例_基于CNN的纹理合成实践【附python实现】
- 查找特定的值(信息学奥赛一本通-T1110)
- ROS推荐链接:UNIX/LINUX专为初学者的教程和命令 http://www.ee.surrey.ac.uk/Teaching/Unix/
- 帝国php数据库备份,解决帝国cms帝国数据库备份王php5.3下500错误
- 【note】Java程序设计基础第五版(上)
- C语言学习之 数组,指针,字符串. (一)
- 「 英雄哪里出来 」算法博客阅读指引
- 画板html5代码,html5教程制作简单画板代码分享
- JUL配置文件进行相关配置
- #12304;#28404;#28404;#37329;#59257;#34701;#23458;#59257;#26381;#30005;#35805;#12305;
- A load persistent id instruction was encountered, but no persistent_load function was specified.
- python支持使用字典的键作为下标,Python 支持使用字典的“键”作为下标来访问字典中的值。...
- 《Oracle 10G 系统教程 中科院培训老师讲授》
- R语言入门——工作空间管理函数
热门文章
- 伍哥原创之豆荚商城商品搜索架构介绍
- asp.net mvc 与 asp.net结合(asp.net mvc 技巧)
- 局域网防雷电***实用解决方案
- 祝博客园里的所有朋友 新年快乐!
- 从别人那拷下来的几点Session使用的经验(转载)
- 人人都能学会的python编程教程11:定义函数
- [WUST2017]一组简单一点的题目(三) A - Calculate S(n)
- CSS3学习手记(1) 选择器
- 苹果手机微信上form表单提交的问题
- 动态代理--cglib