測試環境:
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(每秒處理請求數)
jsp2000
2005.55
3.59
4.11
4.42
452.83
struts1
2000
2006.77
3.83
7.00
5.86
341.03
struts2 jsp
2000
20025.20
26.30
24.11
25.20
79.35
struts2 單例action
2000
20028.36
27.59
27.69
27.88
71.74
struts2 多例action
2000
20031.31
31.97
39.56
34.28
58.34
springmvc3
2000
2007.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無疑又是專案開發的乙個好的選擇。
Java MVC框架效能比較
測試環境 cpu 酷睿2 t5750,記憶體 ddr2 667 2g,web容器 tomcat6.0,最大執行緒數設定為1000,作業系統 winxp sp3 測試步驟 搭建6個web工程,如下 1.純jsp 不包含任何mvc框架,只有乙個測試用的jsp頁面。2.struts1 包含乙個action...
Java MVC框架效能比較
測試環境 cpu 酷睿2 t5750,記憶體 ddr2 667 2g,web容器 tomcat6.0,最大執行緒數設定為1000,作業系統 winxp sp3 測試步驟 搭建6個web工程,如下 1.純jsp 不包含任何mvc框架,只有乙個測試用的jsp頁面。2.struts1 包含乙個action...
Java MVC框架效能比較
測試環境 cpu 酷睿2 t5750,記憶體 ddr2 667 2g,web容器 tomcat6.0,最大執行緒數設定為1000,作業系統 winxp sp3 測試步驟 搭建6個web工程,如下 1.純jsp 不包含任何mvc框架,只有乙個測試用的jsp頁面。2.struts1 包含乙個action...