- 浏览: 44863 次
- 性别:
- 来自: 广州
文章分类
最新评论
来源:http://www.blogjava.net/paulwong/archive/2012/03/03/371171.html
现在各种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页面。
测试结果:
测试工程 | 请求数 | 并发数 | 总时间(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都不包含任何的业务逻辑代码,只是请求转发。每轮测试取三次总时间的平均值。所有工程的测试均全部完成并正常处理请求,没有请求拒绝情况发生。
结论:
- 纯JSP的性能应该最高,这不难理解,JSP被编译成Servlet后,没有任何多余的功能,收到请求后直接处理。(这也验证一句经典的话:越原始效率就越高。)
- struts1的性能是仅次于纯JSP的,由于struts1采用单例Action模式,且本身的封装相比struts2应该说简单很多,虽然开发效率不如struts2,但已经过多年的实践考验,性能稳定高效。
- 相比来说struts2的性能就比较差了,这不难理解,struts2之所以开发方便,是由于采用值栈、OGNL表达式、拦截器等技术对请求参数的映射和返回结果进行了处理,另外还采用大量的标签库等,这些都无疑增加了处理的时间。因此降低了效率。在我们实际的项目中,我测试本地工程访问每秒处理请求数只能达到35左右,应该说还有不少可优化的空间。
- 很多人认为struts2性能差是因为它的多例Action模式导致的,但我们采用spring管理struts2的Action,并设置按单例方式生成Action实例后,发现其性能有所提高,但并不是很明显。由此可见,多例Action模式并不是struts2性能瓶颈所在。另外,我们在struts2中采用JSP方式访问,发现其性能依旧和没有采用任何MVC框架的纯JSP之间存在好几倍的差距,这又从另一个侧面证实了我们刚才得出结论,struts2性能的瓶颈不在于它的多例Action模式。
- SpringMVC3的性能略逊于struts1,但基本是同级别的,这让人眼前一亮,springMVC有着不比struts2差的开发效率和解耦度,但性能却是struts2的好几倍,这让我们灰常振奋,SpringMVC无疑又是项目开发的一个好的选择。
发表评论
-
职场观察:高薪需要什么?
2014-04-01 21:07 362http://xjsunjie.blog.51cto.com ... -
毕业五年来的回顾
2014-04-01 20:59 329http://luogangan.blog.51cto.co ... -
深处跳槽热浪中,跳与不跳该如何抉择?
2013-03-20 13:02 646深处跳槽热浪中,跳与不跳该如何抉择? 跳槽有哪些技巧和注意事项 ... -
面试 需要注意三种公司
2013-03-20 12:55 594来源:http://cuisuqiang.iteye.com ... -
面试 需要警惕三个问题
2013-03-20 12:54 554来源:http://cuisuqiang.ite ... -
离职 需要注意三个问题
2013-03-20 12:53 593来源:http://cuisuqiang.ite ... -
最具争议的10个编程观点
2013-02-12 22:21 654你认为最具争议的编程观点是什么?C#专家Jon Skeet曾 ... -
Java枚举的七种常见用法
2013-01-06 12:19 647http://blog.jobbole.com/31597/ ... -
设计高可用和高负载的网站系统
2012-12-10 12:57 564随着网站的运营,用户 ... -
大型互联网网站架构心得
2012-12-10 12:52 631大型互联网网站架构心 ... -
世界最大的PHP站点 Facebook后台技术探秘
2012-12-10 12:49 709在今年举行的Facebook F8开发者大会上,51CTO带您 ... -
为程序员量身定制的12个目标
2012-11-18 15:44 647http://justjavac.iteye.com/b ... -
Java资源同步的方式
2012-10-25 08:30 777前面我们知道syncnized方法可以对一段代码进行资源 ... -
FusionCharts:Div层被Flash遮住
2012-10-20 17:34 643http://www.zihou.me/html/201 ... -
FusionCharts V3图表导出图片和PDF属性说明
2012-10-20 17:29 791http://www.cnblogs.com/ATree/ar ... -
FusionCharts的中文乱码问题
2012-10-20 17:20 674原文地址:http://wangyaobeijing.b ... -
12 个有效的提高编程技能的方法
2012-10-14 19:17 530来源于:http://www.oschina.net/news ... -
低级别工具 —— 锁定和原子
2012-09-09 17:26 749Lock Java 语言内置了锁定工具 —— sync ... -
Synchronizer 类
2012-09-09 17:26 707Synchronizer 类 Synchroni ... -
CompletionService
2012-09-02 16:44 878CompletionService 将执行服务与类似 Q ...
相关推荐
**Java MVC 框架性能比较** 在当前的软件开发领域,MVC(Model-View-Controller)架构模式被广泛应用于构建Web应用。Struts、Spring MVC等是主流的MVC框架,它们提供了丰富的功能,简化了开发流程,但也带来了性能...
总的来说,这个案例是一个实用的教程,帮助开发者了解如何在Java项目中运用MVC框架来设计和实现一个Web应用,同时与MySQL数据库进行有效交互,充分利用连接池提高性能。通过学习和实践这个案例,开发者能够增强自己...
在IT行业中,Java MVC框架是开发企业级应用的常用技术之一,特别适合构建大型、复杂的Web应用程序。在这个项目中,我们将深入探讨如何在Eclipse环境中使用Java MVC框架来开发一个学生管理系统,这是一个非常适合大学...
Spring MVC 是一款强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它作为Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,简化了处理HTTP请求和响应的过程。本示例项目是作者...
在这个自定义的Java MVC框架中,我们重点探讨了如何实现数据库操作,特别是使用MySQL数据库,并且与`PreparedStatement`相关联。`PreparedStatement`是Java JDBC提供的一种预编译SQL语句接口,可以提高数据库访问的...
**简单的MVC框架例子** 在Web开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,它将应用程序的结构分为三...在实际项目中,更复杂的MVC框架,如Spring MVC,会提供更丰富的功能和更好的性能优化。
talent MVC是一款设计简洁、易于理解和使用的Java MVC框架,它旨在为开发者提供一种轻量级的解决方案,以提高开发效率,降低项目复杂度。这款框架的核心理念是通过最小化配置和简化组件交互来实现高效开发。 在Java...
【标题】"一个轻量级的JAVA MVC框架和实例代码.rar"揭示了这是一个关于Java编程领域的资源,专注于轻量级的MVC(Model-View-Controller)框架实现。MVC是一种设计模式,常用于构建可维护性和扩展性良好的Web应用程序...
在Java MVC框架中,Model代表业务逻辑层,它处理数据和业务规则。在Java中,这通常通过实现JavaBean或使用Spring框架的Bean来完成。Model与数据库进行交互,获取和存储数据,然后将这些数据传递给Controller。 ...
通过以上步骤,我们可以构建一个基于MVC框架、Java编程、MySQL存储、并在Tomcat服务器上运行的在线通讯录系统。这个系统不仅能够提供基本的联系人管理功能,还具有良好的扩展性,可以适应更多的业务需求。
标题中的“为java_web项目添加spring_MVC框架(JSTL表达式)”指的是在Java Web开发中集成Spring MVC框架,并利用JSTL(JavaServer Pages Standard Tag Library)进行页面表达式的处理。Spring MVC是Spring框架的一个...
在北大青鸟的ACCP6.0课程中,这一部分涵盖了第10到12章节的内容,旨在帮助学员掌握Java MVC框架的核心概念和实际应用。 **第10章:理解MVC架构** 在这一章,我们将介绍MVC模式的基本概念。Model代表应用程序的数据...
1. **Java MVC 框架**:Java MVC框架如Spring MVC或Struts2,用于构建系统的后端。MVC模式将应用程序分为三个主要部分:模型(Model)负责数据的处理和业务逻辑,视图(View)负责显示数据,控制器(Controller)...
本例子将详细解析如何创建一个MVC框架,并展示如何通过该框架与数据库进行交互。** **一、MVC框架的基本概念** 1. **Model(模型)**: 模型层是应用程序的核心,负责处理业务逻辑和数据管理。它与数据库或其他数据...
本篇文章将详细介绍如何利用Nutz搭建MVC框架,并探讨其在实际开发中的优势。 **一、Nutz MVC框架介绍** Nutz MVC是Nutz框架的一部分,它基于Servlet容器运行,通过注解驱动,简化了Java Web应用的开发流程。Nutz ...
【Java进阶之手写MVC框架共12页.pdf】 在Java开发中,MVC(Model-View-Controller)架构模式是一种广泛应用于构建Web应用程序的设计模式。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器...
【标题】"mvc框架练习代码"涉及的知识点主要围绕着Web开发中的Model-View-Controller(MVC)架构模式,这是一种广泛应用于Java后端开发的设计模式。在这个项目中,开发者可能在尝试理解和实践如何将业务逻辑、数据...
在这个“javaMVC网上购物平台”项目中,开发者使用了MVC模式来构建一个适合初学者学习的网上购物系统。 1. **MVC架构详解** - **Model(模型)**:负责处理业务逻辑和数据管理。在这个项目中,模型层可能包含了...
在本课程"使用MVC框架开发租房网站12章 贯穿案例 阶段小测试1"中,我们将深入学习如何运用北大青鸟ACCP6.0的教育体系,结合Java编程语言和MVC(Model-View-Controller)架构模式来构建一个功能完备的租房网站。...
5. **拦截器**:在MVC框架中,拦截器可以拦截控制器方法的调用,进行预处理和后处理,例如登录验证、性能监控等,增强了系统的可定制性和可扩展性。 6. **REST格式MVC**:RESTful设计原则强调使用HTTP方法(GET、...