- 浏览: 3502942 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
Java Performance On Various Platforms
(This page used to be titled "Speed of Java", but then I realized that this is incorrect in English, so I changed it to "Java Performance" to help Google to find it.)
I tried to evaluate what would be the best machine to buy for a Java application. When I was looking for some benchmark results on the Internet, I have found that there are not any which can be used to directly compare similar machines with different OS and CPU.
The famous Volano benchmark published results of JVMs running on Intel IA-32 hardware only. The SPEC JBB200 recent results compare 32-CPU IBM servers against 112-CPU SUN servers and the like, which is not very helpful either. To run it yourself, you have to pay $400 for the test.
So I have found a benchmark SciMark and run it on as many platforms as I could. The results are here:
960.7
|
Linux 2.6.22 64-bit | SUN 1.6.0_12 64-bit -server | 2x Intel Quad-Core Xeon E5472 3 GHz |
946.0
|
Linux 2.6.22 64-bit | IBM 1.6.0SR3 64-bit | 2x Intel Quad-Core Xeon E5472 3 GHz |
895.7
|
Linux 2.6.22 64-bit | SUN 1.6.0_06 64-bit -server | 2x Intel Quad-Core Xeon E5472 3 GHz |
956.5
|
Windows Vista 64-bit | SUN 1.6.0_14b02 64-bit -server | 1x Intel Core 2 Duo E8400 3GHz |
956.1
|
Linux 2.6.27 64-bit | SUN 1.6.0_11 64-bit -server | 1x Intel Core 2 Duo E8400 3GHz |
951.7
|
Linux 2.6.27 64-bit | IBM 1.6.0SR3 64-bit | 1x Intel Core 2 Duo E8400 3GHz |
932.2
|
Windows Vista 64-bit | SUN 1.6.0_14b02 32-bit -server | 1x Intel Core 2 Duo E8400 3GHz |
922.5
|
Linux 2.6.27 64-bit | OpenJDK 1.6.0_0-b11 64-bit -server | 1x Intel Core 2 Duo E8400 3GHz |
891.7
|
Linux 2.6.27 64-bit | SUN 1.6.0_11 32-bit -server | 1x Intel Core 2 Duo E8400 3GHz |
890.7
|
Windows Vista 64-bit | SUN 1.6.0_12 32-bit -server | 1x Intel Core 2 Duo E8400 3GHz |
584.9
|
Linux 2.6.27 64-bit | SUN 1.6.0_11 32-bit -client | 1x Intel Core 2 Duo E8400 3GHz |
584.0
|
Windows Vista 64-bit | SUN 1.6.0_12 32-bit -client | 1x Intel Core 2 Duo E8400 3GHz |
943
|
Linux 2.6.22 64-bit | IBM 1.6.0 64-bit | 2x Intel Dual-Core Xeon 5160 3GHz |
898.0
|
Linux 2.6.22 64-bit | SUN 1.6.0_06 64-bit -server | 2x Intel Dual-Core Xeon 5160 3GHz |
889
|
Linux 2.6.18 64-bit | SUN 1.6.0 32-bit -server | 2x Intel Dual-Core Xeon 5160 3GHz |
866
|
Linux 2.6.18 64-bit | gcj 4.0.2 -O3 --no-bounds-check -march=nocona | 2x Intel Dual-Core Xeon 5160 3GHz |
815
|
Linux 2.6.18 64-bit | SUN 1.5.0_11 32-bit -server | 2x Intel Dual-Core Xeon 5160 3GHz |
642.8
|
Linux 2.6.18 64-bit | SUN 1.6.0 64-bit -server | 2x Intel Dual-Core Xeon 5160 3GHz |
633
|
Linux 2.6.18 64-bit | IBM 1.5.0 32-bit | 2x Intel Dual-Core Xeon 5160 3GHz |
576.3
|
Linux 2.6.18 64-bit | SUN 1.5.0_11 64-bit -server | 2x Intel Dual-Core Xeon 5160 3GHz |
568
|
Linux 2.6.18 64-bit | SUN 1.6.0 32-bit -client | 2x Intel Dual-Core Xeon 5160 3GHz |
523
|
Linux 2.6.18 64-bit | gcj 4.0.2 | 2x Intel Dual-Core Xeon 5160 3GHz |
801.7
|
Linux 2.6.22 64-bit | IBM 1.6.0 64-bit | AMD64 8x Dual-Core Opteron 8222 3GHz |
762.0
|
Linux 2.6.22 64-bit | SUN 1.6.0_06 64-bit -server | AMD64 8x Dual-Core Opteron 8222 3GHz |
742.2
|
Linux 2.6.22 64-bit | SUN 1.6.0_06 32-bit -server | AMD64 8x Dual-Core Opteron 8222 3GHz |
563.6
|
Linux 2.6.22 64-bit | SUN 1.6.0_06 32-bit -client | AMD64 8x Dual-Core Opteron 8222 3GHz |
780.8
|
Linux 2.6.18 64-bit | SUN 1.6.0 32-bit -server | 2x Intel Xeon Quad-Core X5355 2.6 GHz |
650.3
|
Linux 2.6.18 64-bit | SUN 1.6.0beta2 64-bit -server | AMD64 8x Dual-Core Opteron 885 2.6GHz |
620.5
|
Linux 2.6.18 64-bit | SUN 1.5.0_09 64-bit -server | AMD64 8x Dual-Core Opteron 885 2.6GHz |
564
|
Linux 2.6.18 64-bit | SUN 1.6.0 32-bit -server | AMD64 8x Dual-Core Opteron 885 2.6GHz |
605
|
Linux 2.6.18 64-bit | SUN 1.6.0_06 64-bit -server | AMD64 1x Dual-Core Opteron 280 2.4GHz |
573.09
|
Linux 2.6.5 64-bit | Blackdown 1.4.2-rc1 64-bit -server | AMD 64 FX-53 2.4GHz |
563.1
|
Linux 2.6.5 64-bit | SUN 1.5.0_01 64-bit (appletviewer) | AMD 64 FX-53 2.4GHz |
560
|
Linux 2.6.5 64-bit | SUN 1.5.0 64-bit (appletviewer) | AMD 64 FX-53 2.4GHz |
545
|
Linux 2.6.5 64-bit | IBM 1.4.2 64-bit (max 576?) | AMD 64 FX-53 2.4GHz |
561.94
|
WinXP | SUN 1.5.0-rc -server | Pentium4 3GHz (w/o HT) (800FSB DualCh. mem) |
556.49
|
Linux 2.6.8 | SUN 1.5.0-rc -server (w/o X-window) | Pentium4 3GHz (w/o HT) |
548.36
|
Linux 2.6.8 | SUN 1.5.0-rc -server (appletviewer) | Pentium4 3GHz (w/o HT) |
547.67
|
WinXP | SUN 1.4.2_03 -server | Pentium4 3GHz (w/o HT) |
544.24
|
Linux 2.6.8 | SUN 1.5.0-rc -server (w/o X-window) | Pentium4 3GHz HT |
536
|
WinXP | SUN 1.4.2_03 -server | Pentium4 3GHz HT |
529.00
|
Linux 2.6.5 | gcj 3.4.0 -march=pentium4 -O3 --no-bounds-check | Pentium4 3GHz (w/o HT) |
499.61
|
Linux 2.6.8 | IBM 1.4.2 | Pentium4 3GHz (w/o HT) |
412.04
|
WinXP | IBM 1.4.2 | Pentium4 3GHz (w/o HT) |
389
|
WinXP | BEA JRockit 1.4.2_04 | Pentium4 3GHz (w/o HT) |
376.9
|
Linux 2.6.5 | BEA JRockit 1.4.2_04 | Pentium4 3GHz (w/o HT) |
308.72
|
Linux 2.6.5 | gcj 3.3.3 -march=pentium4 -O3 | Pentium4 3GHz (w/o HT) |
558.45
|
Linux 2.4.27 | SUN 1.5.0-rc -server | Xeon P4 3.06GHz HT |
544.92
|
Linux 2.4.23 | Blackdown 1.4.2-rc1 -server | Xeon P4 3.06GHz HT |
539.60
|
Linux 2.4.23 | Sun. 1.4.2 -server | Xeon P4 3.06GHz HT |
537.32
|
Linux 2.4.23 | Sun. 1.5.0-beta -server | Xeon P4 3.06GHz HT |
491.78
|
Linux 2.4.23 | IBM 1.4.1 | Xeon P4 3.06GHz HT |
340.07
|
Linux 2.4.23 | BEA Systems, Inc. 1.4.1_01 | Xeon P4 3.06GHz HT |
524.37
|
Linux 2.6.5 64-bit | Blackdown 1.4.2-rc1 64-bit -server | Opteron 148 2.2GHz |
514.00
|
Linux 2.6.5 64-bit | Blackdown 1.4.2-fcs 64-bit -server | Opteron 148 2.2GHz |
513.80
|
Linux 2.6.5 64-bit | Sun. 1.5.0 64-bit -server | Opteron 148 2.2GHz |
513.78
|
Linux 2.6.5 64-bit | Sun. 1.5.0-rc-63b 64-bit -server | Opteron 148 2.2GHz |
500.1
|
Linux 2.6.5 64-bit | Sun. 1.5.0-beta2 64-bit -server | Opteron 148 2.2GHz |
497.33
|
Linux 2.6.5 64-bit | IBM 1.4.2 64-bit | Opteron 148 2.2GHz |
473.12
|
Linux 2.6.5 64-bit | Sun. 1.4.2_03 32-bit -server | Opteron 148 2.2GHz |
470.00
|
Linux 2.6.5 64-bit | Sun. 1.5.0 32-bit -server | Opteron 148 2.2GHz |
443.12
|
Linux 2.6.5 64-bit | IBM 1.4.1SR2 32-bit | Opteron 148 2.2GHz |
443.10
|
Linux 2.6.5 64-bit | IBM 1.4.2SR1 32-bit | Opteron 148 2.2GHz |
505
|
Linux 2.6.22 | SUN 1.6.0_06 -server | Pentium4 2.5GHz |
484.9
|
Linux 2.6.18 | SUN 1.6.0 -server | Pentium4 2.5GHz |
465.82
|
Linux 2.4.23 | Blackdown 1.4.2-rc1 -server | Pentium4 2.5GHz |
461.60
|
Linux 2.4.23 | Sun. 1.4.2_03 -server | Pentium4 2.5GHz |
460
|
Linux 2.4.27 | Sun 1.5.0_01 -server | Pentium4 2.5GHz |
333.00
|
Linux 2.4.27 | IBM 1.4.2SR1 | Pentium4 2.5GHz |
207.19
|
Linux 2.4.23 | Sun. 1.4.2_03 -client | Pentium4 2.5GHz |
196.02
|
Linux 2.4.23 | Sun. 1.4.2 -client | Pentium4 2.5GHz |
422.65
|
Linux 2.4.21 64-bit | Blackdown 1.4.2-rc1 64-bit -server | Opteron 244 1.8GHz |
412.11
|
Linux 2.4.21 64-bit | Sun. 1.5.0-beta 64-bit -server | Opteron 244 1.8GHz |
382.95
|
Linux 2.4.21 64-bit | Sun. 1.5.0-beta 32-bit -server | Opteron 244 1.8GHz |
381.82
|
Linux 2.4.21 64-bit | Blackdown 1.4.2-rc1 32-bit -server | Opteron 244 1.8GHz |
381.80
|
Linux 2.4.21 64-bit | Sun. 1.4.2_03 32-bit -server | Opteron 244 1.8GHz |
302.1
|
WinXP 5.1 | SUN 1.5.0_01 -server | Pentium M 1.5GHz |
225.76
|
MacOSX 0.3.2 | Apple Computer, Inc. 1.4.2_03 | powerpc 970, 2 Ghz |
222.09
|
AIX 5.2 | IBM 1.3.1 32-bit | Power4+ 1.2GHz |
219.36
|
AIX 5.2 | IBM 1.4.1 32-bit | Power4+ 1.2GHz |
214.36
|
AIX 5.2 | IBM 1.4.1 64-bit | Power4+ 1.2GHz |
160.5
|
Linux 2.6.5 64-bit | BEA JRockit 1.5.0_06 64-bit | Itanium2 1.5GHz |
146.7
|
Linux 2.6.9 64-bit | BEA JRockit 1.4.2_04 64-bit | Itanium2 1.4GHz |
138.1
|
Linux 2.6.9 64-bit | SUN 1.4.2_06 64-bit | Itanium2 1.4GHz |
142.0
|
Solaris 10 | SUN 1.5.0_12 | sparcv9 1500 MHz |
105.17
|
Linux 2.4.19 64-bit | BEA JRockit 1.4.2_03 64-bit | Itanium2 1GHz |
96.80
|
Linux 2.4.19 64-bit | Sun. 1.4.2_03 64-bit | Itanium2 1GHz |
90.51
|
SunOS 5.8 | Sun. 1.4.2_03 -server | UltraSPARC-III 750MHz |
67.87
|
MacOSX 0.3.2 | Apple Computer, Inc. 1.4.2_03 | 1 GHz PowerPC G4 |
48.61
|
OSF1 V5.1 | Compaq Computer 1.4.0 | Alpha 667 MHz |
43.00
|
Irix 6.5 | SGI JavaVM-1.3 | MIPS R12000 400MHz |
311.68
|
Linux 2.6.5 64-bit | Blackdown 1.4.2-rc1 64-bit -server | AMD 64 FX-53 2.4GHz |
282.17
|
WinXP | SUN 1.5.0-rc -server | Pentium4 3GHz (w/o HT) 800FSB DualCh. memory |
276.47
|
Linux 2.6.8 | SUN 1.5.0-rc -server | Pentium4 3GHz (w/o HT) |
212.52
|
Linux 2.6.8 | IBM 1.4.2 | Pentium4 3GHz (w/o HT) |
249.97
|
Linux 2.4.23 | Sun. 1.4.2_03 -server | Xeon P4 3.06GHz HT |
249.89
|
Linux 2.4.23 | Sun. 1.5.0-beta -server | Xeon P4 3.06GHz HT |
245.86
|
Linux 2.4.23 | Blackdown 1.4.2-rc1 -server | Xeon P4 3.06GHz HT |
197.92
|
Linux 2.4.23 | IBM 1.4.1 | Xeon P4 3.06GHz HT |
188.64
|
Linux 2.4.23 | BEA JRockit80 1.4.1_01 | Xeon P4 3.06GHz HT |
169.79
|
Linux 2.4.23 | Sun. 1.4.2_03 -client | Xeon P4 3.06GHz HT |
233.36
|
Linux 2.6.5 64-bit | Sun. 1.5.0-rc-63b 64-bit -server | Opteron 148 2.2GHz |
227.72
|
Linux 2.6.5 64-bit | Blackdown 1.4.2-rc1 64-bit -server | Opteron 148 2.2GHz |
222.45
|
Linux 2.6.5 64-bit | Sun. 1.4.2_03 32-bit -server | Opteron 148 2.2GHz |
218.48
|
Linux 2.4.23 | Sun. 1.5.0-beta -server | Pentium4 2.5GHz |
212.70
|
Linux 2.4.23 | Blackdown 1.4.2-rc1 -server | Pentium4 2.5GHz |
210.95
|
Linux 2.4.23 | Sun. 1.4.2_03 -server | Pentium4 2.5GHz |
171.23
|
Linux 2.4.23 | IBM 1.4.1 | Pentium4 2.5GHz |
162.58
|
Linux 2.4.23 | BEA JRockit80 1.4.1_01 | Pentium4 2.5GHz |
132.99
|
Linux 2.4.23 | Sun. 1.4.2_03 -client | Pentium4 2.5GHz |
171.72
|
Linux 2.4.25 | Sun. 1.5.0-beta 64-bit -server | Opteron 244 1.8GHz |
168.49
|
Linux 2.4.25 | Blackdown 1.4.2 64-bit -server | Opteron 244 1.8GHz |
162.32
|
Linux 2.4.25 | Sun. 1.5.0-beta 32-bit -server | Opteron 244 1.8GHz |
161.83
|
Linux 2.4.25 | Blackdown 1.4.2 32-bit -server | Opteron 244 1.8GHz |
160.26
|
Linux 2.4.25 | Sun. 1.4.2_03 32-bit -server | Opteron 244 1.8GHz |
51.50
|
Linux 2.4.19 | Sun. 1.4.2_03 64-bit -server | Itanium2 1GHz |
WebServices speed
The SciMark benchmark tests mostly floating point operations, so it cannot be used to estimate performance for grid services, where XML stacks and web containers are in play. So I have put together another test.
In this test, a SOAP webservice was deployed into Tomcat 5.0.18 /Axis 1.1 container, and a client called that webservice, sending there and back four JavaBeans and a String array, to simulate some useful content, causing 2.2KB XML messages.
A side note - all these tests were run on so many OSes and CPUs using exactly the same binary, compiled only once. This is a real-life demonstration of "Write Once, Run Everywhere" feature of Java.
387
|
120000 | Linux 2.6.5 64-bit | BEA JRockit 1.4.2_04 32-bit | 1x AMD 64 FX-53 2.4GHz |
322
|
4800 | Linux 2.6.5 64-bit | IBM 1.4.2SR1 32-bit | 1x AMD 64 FX-53 2.4GHz |
314
|
6200 | Linux 2.6.5 64-bit | IBM 1.4.1SR2 32-bit | 1x AMD 64 FX-53 2.4GHz |
220
|
2200 | Linux 2.6.5 64-bit | IBM 1.4.2 64-bit | 1x AMD 64 FX-53 2.4GHz |
334
|
80000 | Linux 2.6.5 64-bit | BEA JRockit 1.4.2_04 32-bit | 2x AMD Opteron 244 1.8GHz |
243
|
3600 | Linux 2.4.21 64-bit | IBM 1.4.1SR1 32-bit | 2x AMD Opteron 244 1.8GHz |
195
|
6800 | Linux 2.4.21 64-bit | SUN 1.5.0-b 32-bit -server -XX:CompileThreshold=1500 | 2x AMD Opteron 244 1.8GHz |
190
|
7600 | Linux 2.4.21 64-bit | Blackdown 1.4.2 32-bit -server -XX:CompileThreshold=1500 | 2x AMD Opteron 244 1.8GHz |
183
|
7200 | Linux 2.4.21 64-bit | Blackdown 1.4.2 64-bit -server -XX:CompileThreshold=1500 | 2x AMD Opteron 244 1.8GHz |
180
|
10000 | Linux 2.4.21 64-bit | SUN 1.5.0-b 32-bit -client | 2x AMD Opteron 244 1.8GHz |
165
|
3600 | Linux 2.4.21 64-bit | SUN 1.4.2_03 32-bit -server -XX:CompileThreshold=1500 | 2x AMD Opteron 244 1.8GHz |
160
|
4500 | Linux 2.4.21 64-bit | Blackdown 1.4.2 32-bit -client | 2x AMD Opteron 244 1.8GHz |
150
|
13000 | Linux 2.4.21 64-bit | SUN 1.5.0-b 32-bit -server | 2x AMD Opteron 244 1.8GHz |
150
|
9000 | Linux 2.4.21 64-bit | Blackdown 1.4.2 32-bit -server | 2x AMD Opteron 244 1.8GHz |
140
|
9000 | Linux 2.4.21 64-bit | Blackdown 1.4.2 64-bit -server | 2x AMD Opteron 244 1.8GHz |
320
|
95000 | Linux 2.6.5 64-bit | BEA JRockit 1.4.2_04 32-bit | 1x AMD Opteron 148 2.2GHz |
266
|
35000 | Linux 2.6.5 64-bit | IBM 1.4.1SR2 32-bit | 1x AMD Opteron 148 2.2GHz |
258
|
2600 | Linux 2.6.5 64-bit | IBM 1.4.2 32-bit | 1x AMD Opteron 148 2.2GHz |
250
|
4800 | Linux 2.6.5 64-bit | Blackdown 1.4.2 64-bit -server -XX:CompileThreshold=1500 | 1x AMD Opteron 148 2.2GHz |
238
|
7200 | Linux 2.6.5 64-bit | SUN 1.4.2_03 32-bit -server -XX:CompileThreshold=1500 | 1x AMD Opteron 148 2.2GHz |
NullPointerException in SAXParserImpl | N/A | Linux 2.6.5 64-bit | SUN 1.5.0-rc-b63 for AMD64 | 1x AMD Opteron 148 2.2GHz |
NullPointerException in SAXParserImpl | N/A | Linux 2.6.5 64-bit | SUN 1.5.0-rc-b63 for IA32 | 1x AMD Opteron 148 2.2GHz |
311
|
99000 | Linux 2.6.9 ia64 | BEA JRockit 1.4.2_04 64-bit | 2x Itanium2 1.4GHz |
139
|
3600 | Linux 2.6.9 ia64 | SUN 1.4.2_06 64-bit -XX:CompileThreshold=1500 | 2x Itanium2 1.4GHz |
115
|
10400 | Linux 2.6.9 ia64 | SUN 1.4.2_06 64-bit | 2x Itanium2 1.4GHz |
96
|
15000 | Linux 2.6.9 ia64 | SUN 1.4.2_06 64-bit -Xcomp | 2x Itanium2 1.4GHz |
279
|
75000 | Linux 2.6.5 | BEA JRockit 1.4.2_04 | 1x Pentium4 3GHz (w/o HT, 800FSB, dualch.mem) |
220
|
3600 | Linux 2.6.8 | IBM 1.4.2 | 1x Pentium4 3GHz (w/o HT) |
213
|
2600 | WinXP | IBM 1.4.2 | 1x Pentium4 3GHz (w/o HT) |
213
|
9800 | WinXP | SUN 1.4.2_03 -server -XX:CompileThreshold=1500 | 1x Pentium4 3GHz (w/o HT) |
192
|
4000 | Linux 2.6.8 | IBM 1.4.2 | 1x Pentium4 3GHz HT |
244
|
83000 | Linux 2.4.25 ia64 | BEA JRockit 1.4.2_04 64-bit | 2x Itanium2 1GHz |
140
|
400 | Linux 2.4.19 ia64 | BEA JRockit 1.4.2_03 64-bit | 2x Itanium2 1GHz |
80
|
5000 | Linux 2.4.19 ia64 | SUN 1.4.2_03 64-bit -server | 2x Itanium2 1GHz |
239
|
95000 | Linux 2.4.27 | BEA JRockit 1.4.2_04 | 1x Pentium4 2.5GHz |
198
|
4000 | Linux 2.4.23 | SUN 1.5.0-b -server -XX:CompileThreshold=1500 | 1x Pentium4 2.5GHz |
187
|
2400 | Linux 2.4.23 | IBM 1.4.1SR1 | 1x Pentium4 2.5GHz |
182
|
5000 | Linux 2.4.23 | SUN 1.4.2_03 -server -XX:CompileThreshold=1500 | 1x Pentium4 2.5GHz |
166
|
3000 | Linux 2.4.23 | SUN 1.5.0-b -client | 1x Pentium4 2.5GHz |
163
|
400 | Linux 2.4.23 | BEA JRockit 8.1sp2-1.4.1_05 | 1x Pentium4 2.5GHz |
156
|
9000 | Linux 2.4.23 | SUN 1.5.0-b -server | 1x Pentium4 2.5GHz |
152
|
400 | Linux 2.4.23 | BEA JRockit80 1.4.1_01 | 1x Pentium4 2.5GHz |
150
|
9000 | Linux 2.4.23 | SUN 1.4.2_03 -server | 1x Pentium4 2.5GHz |
150
|
2500 | Linux 2.4.23 | SUN 1.4.2_03 -client | 1x Pentium4 2.5GHz |
150
|
2500 | Linux 2.4.23 | Blackdown 1.4.2-rc1 -client | 1x Pentium4 2.5GHz |
145
|
9000 | Linux 2.4.23 | Blackdown 1.4.2-rc1 -server | 1x Pentium4 2.5GHz |
116
|
400 | Linux 2.4.23 | BEA JRockit 1.4.2_03 | 1x Pentium4 2.5GHz |
232
|
100000 | Linux 2.4.27 | BEA JRockit 1.4.2_04 | 2x Xeon P4 3.06GHz HT |
215
|
3000 | Linux 2.4.23 | IBM 1.4.1SR1 | 2x Xeon P4 3.06GHz HT |
210
|
4600 | Linux 2.4.23 | SUN 1.5.0-b -server -XX:CompileThreshold=1500 | 2x Xeon P4 3.06GHz HT |
180
|
4400 | Linux 2.4.23 | SUN 1.4.2_03 -server -XX:CompileThreshold=1500 | 2x Xeon P4 3.06GHz HT |
175
|
3000 | Linux 2.4.23 | SUN 1.5.0-b -client | 2x Xeon P4 3.06GHz HT |
160
|
7500 | Linux 2.4.23 | SUN 1.5.0-b -server | 2x Xeon P4 3.06GHz HT |
145
|
9000 | Linux 2.4.23 | SUN 1.4.2_03 -server | 2x Xeon P4 3.06GHz HT |
140
|
2500 | Linux 2.4.23 | SUN 1.4.2_03 -client | 2x Xeon P4 3.06GHz HT |
152
|
2800 | MacOSX 0.3.2 | Apple 1.4.2-34 -server | 2x PowerPC 970 2GHz |
141
|
1800 | MacOSX 0.3.2 | Apple 1.4.2-34 -client | 2x PowerPC 970 2GHz |
150
|
1500 | AIX 5.2 | IBM 1.4.1 32-bit | 2x Power4+ 1.2GHz |
115
|
1500 | AIX 5.2 | IBM 1.4.0 64-bit | 2x Power4+ 1.2GHz |
95
|
1200 | OSF1 alpha V5.1 | Compaq 1.4.0-1 Fast VM | 4x Alpha 667MHz |
79
|
11000 | SunOS 5.8 | SUN 1.4.2_03-b02 -server -XX:CompileThreshold=1500 | 2x UltraSPARC-III 750MHz |
64
|
6000 | SunOS 5.8 | SUN 1.4.2_03-b02 -client | 2x UltraSPARC-III 750MHz |
13
|
400 | IRIX64 6.5 | SGI 1.4.1 -classic | 20x MIPS R14000 500 Mhz |
Java virtual machine has big overhead when starting, because the HotSpot or Just-In-Time compilers need to analyze and compile bytecode. The number of calls which were performed before the speed stabilized is in the "stable cycles" column of the result table.
This test has one deceiving feature - at the first look, one would expect multiprocesors to have an advantage, because client and server are separate processes. However, the client and the server are roundtriping a set of data, it means that client send a request and waits, server receives the request, generates a response and waits, and so on. Thus only one of the two processes is running at any time, so effectively it is a single thread test. That explains why multiprocessors are not twice faster than uniprocessors.
A very interesting thing is the influence of option
-XX:CompileThreshold=1500
to SUN HotSpot JVM. The default is 10000 for Server VM and 1500 for Client VM. However
setting it to 1500 for Server VM makes it faster than Client VM. Setting it to 100 actualy
lowers the performance. And using option -Xcomp (which means that
all code is compiled before usage) gives even lower performance, which is surprising.
The BEA JRockit JVM has a very special behavior in several ways. First, its results are fluctuating widely over time. While other JVMs get to a maximum speed after relatively short number of calls (less than ten thousand) and then the measured times after each 200 calls give stable results, with JRockit this would give results varying as much as 50% for each 200 calls. So I had to use batches of 5000 calls to get stable average of calls per second, but even then it is varying like 10%. Second speciality is that it starts slowly, and it takes very high number of calls, like 100000, to get to its maximum speed. And the third speciality is that it is the only JVM, which runs this single-threaded test faster on two-CPU Opteron 1.8GHz machine than on one-CPU Opteron 2.2GHz. My guess is that this is caused by JRockit's parallel garbage collector, which can take advantage of the second CPU.
gSOAP C implementation
There is another implementation of SOAP in the C language called gSOAP . We can compare equivalent clients and servers against each other. However the comparison is not fair to Java, because Axis is able to create any dynamic SOAP calls, while gSOAP is a preprocessor generating one-purpose code, which can thus be much faster. The graph is scaled down 8 times now.
If you want to run you own tests, download source code , compile for your platform and run. Please send me your results if you have a platform not listed here.
1540
|
Linux 2.4.23 | gSOAP 2.5, gcc 2.95.4 -O2 | gSOAP 2.5, gcc 2.95.4 -O2 | 1x Pentium4 2.5GHz |
375
|
Linux 2.4.23 | Axis, Java IBM 1.4.1SR1 | gSOAP 2.5, gcc 2.95.4 | 1x Pentium4 2.5GHz |
370
|
Linux 2.4.23 | gSOAP 2.5, gcc 2.95.4 | Axis, Java SUN 1.5.0-b -server -XX | 1x Pentium4 2.5GHz |
360
|
Linux 2.4.23 | gSOAP 2.5, gcc 2.95.4 | Axis, Java IBM 1.4.1SR1 | 1x Pentium4 2.5GHz |
352
|
Linux 2.4.23 | Axis, Java SUN 1.5.0-b -server -XX | gSOAP 2.5, gcc 2.95.4 | 1x Pentium4 2.5GHz |
310
|
Linux 2.4.23 | Axis, Java SUN 1.5.0-b -client | gSOAP 2.5, gcc 2.95.4 | 1x Pentium4 2.5GHz |
198
|
Linux 2.4.23 | Axis, Java SUN 1.5.0-b -server -XX | Axis, Java SUN 1.5.0-b -server -XX | 1x Pentium4 2.5GHz |
187
|
Linux 2.4.23 | Axis, Java IBM 1.4.1SR1 | Axis, Java IBM 1.4.1SR1 | 1x Pentium4 2.5GHz |
And now gSOAP client against gSOAP server on various platforms:
3300
|
Linux 2.6.16 64-bit | gSOAP 2.5, gcc 4.0.2 -O2 64-bit | 1x Dual Core AMD Opteron 280 2.4GHz |
3241
|
Linux 2.6.5 64-bit | gSOAP 2.5, gcc 3.3.3 -O2 64-bit | 1x AMD FX-53 2.4GHz |
2990
|
Linux 2.6.5 64-bit | gSOAP 2.7.0c, gcc 3.3.3 -O2 64-bit | 1x AMD Opteron 148 2.2GHz |
2907
|
Linux 2.6.5 64-bit | gSOAP 2.5, gcc 3.3.3 -O2 64-bit | 1x AMD Opteron 148 2.2GHz |
2903
|
Linux 2.6.5 64-bit | gSOAP 2.6.2, gcc 3.3.3 -O2 64-bit | 1x AMD Opteron 148 2.2GHz |
2604
|
Linux 2.6.5 64-bit | gSOAP 2.7.0c, gcc 3.3.3 -O2 32-bit | 1x AMD Opteron 148 2.2GHz |
2570
|
Linux 2.6.5 64-bit | gSOAP 2.6.2, gcc 3.3.3 -O2 32-bit | 1x AMD Opteron 148 2.2GHz |
1988
|
Linux 2.6.5 64-bit | gSOAP 2.5, gcc 3.3.3 64-bit | 1x AMD Opteron 148 2.2GHz |
2340
|
Linux 2.4.21 64-bit | gSOAP 2.5, gcc 3.2.2 -O2 64-bit | 2x AMD Opteron 244 1.8GHz |
2130
|
Linux 2.4.21 64-bit | gSOAP 2.5, gcc 2.95.4 -O2 32-bit | 2x AMD Opteron 244 1.8GHz |
2265
|
Linux 2.6.9 IA-64 | gSOAP 2.5, Intel icc 8.1 -O2 | 2x Itanium2 1.4GHz |
2070
|
Linux 2.6.9 IA-64 | gSOAP 2.5, gcc 3.3.5 -O2 | 2x Itanium2 1.4GHz |
1936
|
Linux 2.6.5 | gSOAP 2.5, gcc 3.4.0 -O3 | 1x Pentium4 3GHz (w/o HT) |
1835
|
Linux 2.6.8 | gSOAP 2.5, gcc 3.3.3 -O2 | 1x Pentium4 3GHz (w/o HT) |
1765
|
Linux 2.4.23 | gSOAP 2.5, gcc 2.95.4 -O2 | 2x Xeon P4 3.06GHz HT |
1750
|
Linux 2.4.23 | gSOAP 2.5, gcc 3.3.1 -O2 | 2x Xeon P4 3.06GHz HT |
1600
|
Linux 2.4.23 | gSOAP 2.5, gcc 2.95.4 | 2x Xeon P4 3.06GHz HT |
1530
|
Linux 2.4.23 | gSOAP 2.5, gcc 3.3.1 | 2x Xeon P4 3.06GHz HT |
1590
|
Linux 2.4.19 IA-64 | gSOAP 2.5, Intel ecc 7.0 -O2 | 2x Itanium2 1GHz |
1514
|
Linux 2.4.19 IA-64 | gSOAP 2.5, gcc 2.96 -O2 | 2x Itanium2 1GHz |
1540
|
Linux 2.4.23 | gSOAP 2.5, gcc 2.95.4 -O2 | 1x Pentium4 2.5GHz |
1430
|
Linux 2.4.23 | gSOAP 2.5, gcc 2.95.4 | 1x Pentium4 2.5GHz |
703
|
AIX 5.2 | gSOAP 2.5, gcc 2.9-aix51 -O2 | 2x Power4+ 1.2GHz |
530
|
SunOS 5.8 | gSOAP 2.5, gcc 2.8.1 -O2 | 2x UltraSPARC-III 750MHz |
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74151在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3759原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23494Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2134FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5524我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2347WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1565Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2122终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14841大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1711charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22625Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4884来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2375本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8699一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2906近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3702目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2542Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2100由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3005安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1854本文介绍物理地址扩展 ...
相关推荐
It enables the creation of a stable and efficient system that can run on various platforms. Coupled with MySQL, a relational database management system (RDBMS), the system ensures data integrity and ...
By comparing APIs from platforms such as Facebook, Twitter, GitHub, and PayPal, the book teaches a range of exciting capabilities with RESTful services and explores the infinite possibilities by using...
Lastly, performance testing is conducted on the system and its functional modules. In conclusion, the羽毛球馆管理系统 aims to streamline the allocation and booking of badminton resources, reducing ...
it first executes the embedded Java program segments and then returns the execution results along with the HTML code in the JSP file to the client. The inserted Java program segments can interact with...
9. **Integration with Social Media**: The system allows users to share their discoveries or plans on social media platforms, promoting the tourism industry and generating word-of-mouth buzz. ...
It ensures data integrity and high performance, making it suitable for handling the transactional nature of an online flower ordering system. The online flower ordering system designed in this ...
6. **Result Tracking and Analytics**: Detailed reports and analytics on individual and class performance help teachers monitor progress and identify areas for improvement. 7. **Security and Privacy**...
Improved font selection on all platforms, allowing selection of different weights by name Added setting theme_font_options to control font rendering of UI elements Improved auto indent rules for ...
This compiled bytecode can then be executed by the Java Virtual Machine (JVM), which provides performance benefits over interpreting Groovy code at runtime. To compile a Groovy script, use the ...
The choice of Java as the programming language for this project is based on its popularity, robustness, and extensive libraries that support web application development. Java's object-oriented nature ...
JSP (JavaServer Pages), a technology based on Java, is used for dynamic webpage creation, enabling interactive user interfaces and server-side processing. The backend of the system relies on MySQL, a...
- **Multi-Platform Support**: Both Python and Java are highly portable and can run on multiple platforms. - **Verbosity**: Python is less verbose, using indentation-based syntax instead of explicit ...
1. **Data Collection**: Collecting a large dataset of movie reviews from various sources, such as online forums, social media, and dedicated movie review platforms. This dataset should be diverse and ...