Performance comparison of JITs (Feb 2001)

last-modified: Jan 21 15:40, 2002 JST

Back to:

Performance comparison pages:


This page shows results of performance comparisons among Java runtime systems on Linux.

The following benchmarks were applied to many Java runtime systems.

The followings runtime systems were evaluated:

All benchmark programs run on the following three computers:

All results are also available in Mirosoft Excel book format: `JIT-eval-010311.xls'.


SPEC JVM98

SPEC JVM98 (http://www.spec.org/osg/jvm98/) is a benchmark suite contains real Java applications.
This benchmark consists of

SPEC JVM98 shows scores for each benchmark program and the geometric mean of them. Higher number is better.

Maximum and minimum heap size were set as 32 MB. However the Kaffe needs more than 32 MB as heap size. The _201_compress and _213_javac benchmarks stop its execution with OutOfMemoryError if only 32 MB memory is given. I supplied 48 MB to the Kaffe.

P3 results of SPEC JVM98 K6-2 results of SPEC JVM98 Crusoe results of SPEC JVM98
Pentium III K6-2 Crusoe

Pentium III
Runtime system_227_ mtrt_202_ jess_201_ compress_209_ db_222_ mpegaudio_228_ jack_213_ javacGeometric Mean
HotSpot Server VM10462.318.620.477.479.019.843.6
IBM JDK 1.380.650.419.522.110563.620.642.2
HotSpot Client VM44.648.417.919.559.764.120.034.5
IBM JDK 1.1.842.533.518.914.971.345.717.630.2
ORP (O3 JIT)7.5320.258.113.273.925.2N/A24.5
ORP (O1 JIT)6.9320.446.312.060.525.0N/A22.2
OpenJIT20.616.814.96.7629.017.36.3414.1
JBuilder JIT21.016.914.86.7128.74.715.8511.6
shuJIT10.214.311.96.6720.214.25.5510.9
Kaffe8.085.3737.18.6023.04.596.169.88
TYA8.4312.210.65.8912.611.35.279.01
sunwjit.so4.326.2713.3N/A (cannot complete)17.511.35.248.48
interpreter5.515.303.483.194.434.603.504.20
K6-2
Runtime system_227_ mtrt_202_ jess_201_ compress_209_ db_222_ mpegaudio_228_ jack_213_ javacGeometric Mean
IBM JDK 1.325.721.714.412.233.028.612.619.7
HotSpot Server VM25.727.314.09.7726.837.111.119.5
HotSpot Client VM14.922.313.08.9820.327.310.215.5
IBM JDK 1.1.812.712.012.97.5624.815.67.4512.3
ORP (O3 JIT)3.259.5429.36.4126.711.7N/A11.0
ORP (O1 JIT)3.129.2422.16.0123.610.8N/A9.96
OpenJIT8.168.709.883.7111.19.064.347.33
shuJIT5.437.928.653.8910.97.103.536.31
JBuilder JIT9.448.4310.33.1013.52.543.776.14
TYA5.797.087.553.398.906.233.755.79
sunwjit.so2.323.069.24N/A (cannot complete)8.525.913.444.74
Kaffe3.292.4718.04.447.962.052.824.36
interpreter2.582.691.951.722.192.292.012.18
Crusoe
Runtime system_227_ mtrt_202_ jess_201_ compress_209_ db_222_ mpegaudio_228_ jack_213_ javacGeometric Mean
HotSpot Server VM55.439.310.710.946.445.49.0524.2
IBM JDK 1.319.630.210.715.146.237.29.4720.6
IBM JDK 1.1.827.421.910.710.239.628.79.2318.3
HotSpot Client VM18.027.39.6311.028.335.68.7817.3
ORP (O3 JIT)5.1513.150.67.7940.415.9N/A16.1
ORP (O1 JIT)4.7512.733.37.0832.415.2N/A13.8
OpenJIT11.311.89.044.8815.111.74.388.93
JBuilder JIT12.310.68.534.4220.72.973.877.36
Kaffe4.933.8731.76.3212.24.884.027.11
TYA6.359.037.424.3212.18.653.606.83
sunwjit.so2.774.058.11N/A (cannot complete)10.78.053.625.52
shuJIT2.961.2510.22.5516.59.612.004.37
interpreter3.683.632.012.192.642.682.342.67

SciMark 2.0

SciMark 2.0 (http://math.nist.gov/scimark2/) is a benchmark suite based on numerical kernels. They were collected by NIST researchers.

I specified the `-large' option to run the large problem size version. SciMark 2.0 shows results in MFlops (mega floating-point operations per second) and the composite score, which is the arithmetic mean of them. Therefore, SOR, which shows relatively higher value, affects the composite score. Oppositely, FFT and Monte Carlo do not very much. Higher number is better because results were in MFlops.

P3 results of SciMark 2.0 K6-2 results of SciMark 2.0 Crusoe results of SciMark 2.0
Pentium III K6-2 Crusoe

Pentium III :
Runtime systemFFT (1048576)SOR (1000x1000)Monte CarloSparse matmult (N=100000, nz=1000000)LU (1000x1000)Composite Score
IBM JDK 1.3.010.680.516.728.837.634.9
ORP (O3 JIT)10.780.65.2429.537.132.6
IBM JDK 1.1.810.677.214.724.035.632.4
HotSpot Server VM12.672.719.726.326.231.5
HotSpot Client VM11.978.110.525.426.630.5
ORP (O1 JIT)9.7377.44.1922.122.127.1
GCJ (-O2 with .class)9.4547.23.9119.224.320.8
OpenJIT9.9543.81.6112.622.918.2
sunwjit.so8.4744.11.9818.44.8715.6
shuJIT6.3037.63.5614.515.015.4
JBuilder JIT (*)10.026.43.5913.023.415.3
Kaffe6.2132.54.3612.219.114.9
GCJ (-O0 with .class)6.3029.22.8612.914.113.1
TYA5.5220.52.9012.317.011.7
JBuilder JIT3.4228.23.7117.34.7811.5
interpreter2.006.921.614.094.783.79
K6-2 :
Runtime systemFFT (1048576)SOR (1000x1000)Monte CarloSparse matmult (N=100000, nz=1000000)LU (1000x1000)Composite Score
IBM JDK 1.3.05.3549.97.915.720.419.8
ORP (O3 JIT)4.2052.91.6218.520.319.5
IBM JDK 1.1.84.1238.07.0118.117.917.0
ORP (O1 JIT)4.0741.91.7217.516.216.3
HotSpot Client VM4.9833.66.3217.217.515.9
HotSpot Server VM4.9234.67.2313.317.115.4
GCJ (-O2 with .class)4.0534.81.134.3516.512.2
JBuilder JIT (*)3.8219.81.499.4214.19.73
shuJIT4.1918.62.2311.411.69.61
TYA3.5115.81.7210.411.78.63
OpenJIT3.5114.11.599.2010.47.77
JBuilder JIT1.6520.31.759.682.617.19
GCJ (-O0 with .class)3.4417.11.024.329.307.04
Kaffe3.0412.81.897.359.886.99
sunwjit.so3.7715.81.119.112.616.47
interpreter1.073.710.6262.212.612.05
Crusoe :
Runtime systemFFT (1048576)SOR (1000x1000)Monte CarloSparse matmult (N=100000, nz=1000000)LU (1000x1000)Composite Score
ORP (O3 JIT)4.8882.33.8527.035.030.6
HotSpot Server VM4.6930.512.720.022.128.0
IBM JDK 1.3.05.4062.311.622.834.527.3
IBM JDK 1.1.85.3653.17.6320.224.922.2
HotSpot Client VM4.5739.67.8715.820.817.7
ORP (O1 JIT)4.7239.33.3916.920.216.9
GCJ (-O2 with .class)4.6029.62.3616.119.214.4
shuJIT4.0433.92.7313.012.713.3
JBuilder JIT (*)4.8117.42.2810.821.811.4
OpenJIT4.3623.62.239.0215.210.9
TYA4.1417.51.9611.818.310.7
sunwjit.so4.6628.31.2411.53.529.83
GCJ (-O0 with .class)4.0815.82.0211.712.59.23
JBuilder JIT1.9817.42.3217.63.538.57
Kaffe3.0015.23.308.5310.38.08
interpreter1.215.160.8082.593.402.63
(*) In default setting, JBuilder JIT compile a method when it is called for the second time. In this case, that compilation threshold was set as 1, then all methods were compiled as soon as called.

Linpack benchmark

Linpack Benchmark -- Java Version (http://www.netlib.org/benchmark/linpackjava/). The problem size is 500 x 500. The results are in MFlops (mega floating-point operations per second), so higher is better.

Pentium III : K6-2 : Crusoe :
P3 results of Linpack benchmark K6-2 results of Linpack benchmark Crusoe results of Linpack benchmark
ORP (O3 JIT)38.385
IBM JDK 1.3.037.899
IBM JDK 1.1.836.057
HotSpot Server VM35.047
HotSpot Client VM27.087
ORP (O1 JIT)25.955
GCJ (-O2 with .class)25.906
GCJ (-O2 with .java)23.223
shuJIT19.606
JBuilder JIT (*)19.153
JBuilder JIT18.704
Kaffe18.584
TYA16.697
GCJ (-O0 with .java)16.461
OpenJIT14.328
GCJ (-O0 with .class)13.97
sunwjit.so4.234
interpreter4.228
ORP (O3 JIT)21.294
IBM JDK 1.3.020.201
HotSpot Client VM19.075
IBM JDK 1.1.818.161
GCJ (-O2 with .class)17.803
HotSpot Server VM17.634
ORP (O1 JIT)17.393
GCJ (-O2 with .java)17.112
shuJIT12.785
TYA11.206
JBuilder JIT (*)10.982
JBuilder JIT10.686
Kaffe9.790
GCJ (-O0 with .java)9.591
GCJ (-O0 with .class)9.167
OpenJIT8.596
sunwjit.so2.266
interpreter2.263
HotSpot Server VM34.570
ORP (O3 JIT)34.190
IBM JDK 1.3.031.599
IBM JDK 1.1.825.481
HotSpot Client VM22.403
ORP (O1 JIT)21.037
GCJ (-O2 with .class)18.052
TYA17.803
GCJ (-O2 with .java)17.579
shuJIT16.231
JBuilder JIT (*)15.968
JBuilder JIT15.551
GCJ (-O0 with .class)12.095
Kaffe10.927
OpenJIT8.153
GCJ (-O0 with .java)8.137
sunwjit.so3.433
interpreter3.26
(*) In default setting, JBuilder JIT compile a method when it is called for the second time. In this case, that compilation threshold was set as 1, then all methods were compiled as soon as called.


Eratosthenes Sieve

The TYA archive includes this benchmark as `demo/Sieve.java'. These values are in number of operations per 10 seconds, so higher is better.

In this benchmark program, the compilation threshold was set as 1 for JBuilder JIT, then all methods were compiled as soon as called.

Pentium III : K6-2 : Crusoe :
IBM JDK 1.3.03780
ORP (O3 JIT)3495
IBM JDK 1.1.83368
GCJ (-O2 with .java)3117
ORP (O1 JIT)2607
GCJ (-O2 with .class)2444
HotSpot Server VM2178
Kaffe2036
JBuilder JIT1973
HotSpot Client VM1645
OpenJIT1476
sunwjit.so1359
shuJIT1140
GCJ (-O0 with .java)1040
TYA1039
GCJ (-O0 with .class)958
interpreter224
IBM JDK 1.3.02187
ORP (O3 JIT)2708
IBM JDK 1.1.82073
GCJ (-O2 with .java)2394
ORP (O1 JIT)1672
GCJ (-O2 with .class)1532
HotSpot Server VM1334
Kaffe1347
JBuilder JIT1209
HotSpot Client VM1167
OpenJIT928
sunwjit.so667
shuJIT832
GCJ (-O0 with .java)785
TYA670
GCJ (-O0 with .class)671
interpreter78
IBM JDK 1.3.02427
ORP (O3 JIT)2419
GCJ (-O2 with .java)2226
IBM JDK 1.1.82059
Kaffe1936
HotSpot Server VM1724
ORP (O1 JIT)1628
GCJ (-O2 with .class)1590
JBuilder JIT1389
shuJIT1355
HotSpot Client VM1349
sunwjit.so1244
TYA1206
GCJ (-O0 with .java)1142
GCJ (-O0 with .class)1126
OpenJIT980
interpreter102


Related Resources

The Java Performance Report
http://www.javalobby.org/fr/html/frm/javalobby/features/jpr/
Java Grande Forum
http://www.javagrande.org/
Java Numerics (at NIST)
http://math.nist.gov/javanumerics/
validgh Java numerics page
http://www.validgh.com/java/
Java in Science and Engineering list, Java Grande Forum list
http://mailer.csit.fsu.edu/mailman/listinfo

Copyright (C) 2000,2001,2002 Kazuyuki Shudo
<shudo at computer.org>