橫向對比JVM 1.6與JVM 1.5性能
這里先介紹一下用來做JVM性能評測的軟件——Volano BenchMark,這是一個純粹用Java寫出來的服務器benchmark評測的軟件。其實這本來是個WebChat的軟件,制作者在Chat App的功能基礎上發展出這個對JVM性能測試的小軟件,用來在不同硬件配置的機器上或者是不同Kernel的操作系統上對不同的JVM進行性能測試。它是通過對服務器建立多個客戶端的連接來測量客戶端程序廣播批量信息所需要的時間,從而達到對JVM性能測試的結果。
其實這個軟件能對服務器的以下方面性能進行評測:調度程序,TCP/IP及Ethernet Driver的網絡吞吐及響應,Pthreads線程,SMP(Symmetric Multi Processing對稱多處理)性能測量。
Benchmark 的配置
CHAT 房間數量:10
每個房間用戶數量:20
每個用戶信息量:1000
服務器和客戶端都在同一臺電腦
測試用到的JVM
Sun Client JVM 1.6.0-beta-b59g :
Jdk-6-beta-windows-i586
Options used: -server –Xmx128m (default)
Sun Client JVM 1.5.0_01-b08 :
Jdk-1_5_0_01-windows-i586-p
Options used: -server –Xmx128m (default)
在這里我補充一下,JVM的啟動Option我沒有進行配置,因為這里做的只是在通常情況下Mustang(1.6)和Tiger(1.5)的對比,所以選用server還是Client/Hotspot、預分配Heap的大小是128M還是512M就不去討論了。如果大家需要更深的討論歡迎一起討論,這里我個人感覺-server是比-Client(也就是Java選項中的Hotspot)快,啟動會慢一點,但運行速度比較快。同時這里不使用Net模式進行測試,只使用Loop。
硬件配置
OS :Microsoft Windows XP [版本 5.1.2600] (Service Pack 2)
CPU: AMD Athlon(tm) XP 2200+ Thoroughbred-B Processor(0.13μm)
Memory: 512MB
Cache:64+64KB L1 Cache+258 KB L2 Cache
測試結果:
測試結果是以每秒信息數量來衡量的,測試結果取5次測試去掉***和***后的平均值:
JVM |
指標 |
1 |
2 |
3 |
4 |
5 |
1.6 β JVM Mustang |
持續時間(秒) |
46.235 |
43.5 |
45.063 |
44.016 |
44.719 |
平均吞吐量 |
8651 |
9195 |
8876 |
9088 |
8945 | |
1.5 JVM Tiger |
持續時間(秒) |
47.828 |
43.125 |
42.266 |
41.984 |
42.359 |
平均吞吐量 |
8363 |
9275 |
9464 |
9527 |
9443 |
測試結果:
Mustang JVM 1.6 β: 8969.667
Tiger JVM 1.5 : 9394
感覺有點不太對勁,重新啟動電腦再試了一遍:
JVM |
指標 |
1 |
2 |
3 |
4 |
5 |
1.6 β JVM Mustang |
持續時間(秒) |
46.312 |
44.063 |
44.11 |
44.109 |
44.953 |
平均吞吐量 |
8637 |
9078 |
9068 |
9068 |
8898 | |
1.5 JVM Tiger |
持續時間(秒) |
46.813 |
43.621 |
42.512 |
42.684 |
43.012 |
平均吞吐量 |
8663 |
9145 |
9435 |
9456 |
9426 |