Performance comparison of JITs (Sep 2000)

last-modified: Oct 11 18:21, 2000 JST


This page shows results of performance comparisons among Java runtime systems on Linux.
The old comparison page is here.

The followings runtime systems were evaluated.

I applied the following benchmarks to the runtime systems.

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


SPEC JVM98

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

The following results were obtained with K6-2 / 400 MHz processor and Linux 2.2.16. These are scores, so higher is better.

Maximum and minimum heap size were set as 32 MB, because the machine has only 64 MB memory. 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.

Runtime system_227_mtrt_202_jess_201_compress_209_db_222_mpegaudio_228_jack_213_javacGeometric Mean
IBM JDK 1.326.023.714.812.433.530.613.220.5
HotSpot Server VM24.227.413.99.5336.535.911.619.2
HotSpot Client VM16.122.613.09.1920.529.311.316.2
IBM JDK 1.1.811.711.713.17.5623.816.27.2012.1
OpenJIT8.138.5210.33.3511.18.644.317.18
JBuilder JIT8.888.3210.43.4513.92.743.816.28
shuJIT5.236.868.713.9710.86.783.446.10
TYA5.796.697.673.398.756.663.695.79
sunwjit2.302.909.26N/A (cannot complete)7.945.823.094.55
Kaffe3.272.4616.34.287.662.152.724.25
interpreter2.602.681.971.712.192.341.992.19
graph for SPEC JVM98

SciMark 2.0

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

The results were produced by Pentium II / 333 MHz and Linux 2.4.0. These are scores, so higher is better.

Runtime systemFFT (1024)SOR (100x100)Monte CarloSparse matmult (N=1000, nz=5000)LU (100x100)Composite Score
IBM JDK 1.336.691.59.8544.585.753.6
IBM JDK 1.1.836.584.37.0441.858.845.7
HotSpot Client VM18.484.78.3230.050.738.4
HotSpot Server VM19.271.310.124.150.735.1
GCJ (-O2 with .class)17.142.12.2920.826.421.7
OpenJIT8.6932.71.9410.619.414.7
JBuilder JIT10.119.72.0212.916.812.3
shuJIT6.1426.51.9911.911.311.6
sunwjit9.1932.91.1310.93.0011.4
Kaffe5.3923.52.1610.813.111.0
GCJ (-O0 with .class)6.5320.81.6311.110.210.0
TYA4.2114.71.598.9711.98.27
interpreter1.213.690.6422.362.952.17
graph for SciMark2

Linpack benchmark

Linpack Benchmark -- Java Version (http://www.netlib.org/benchmark/linpackjava/).

A Pentium II / 333 MHz processor and Linux 2.4.0 perform as the followings. These values are in mega floating-point operations per second (Mflops), so higher is better.

The scores by runtime systems (i.e. IBM JDK and HotSpot Server VM) which utilize adaptive optimization techniques are not good with the 200x200 smaller problem. I guess that adaptive optimizations could not be applied well at the end of the benchmark, because the Linpack benchmark runs for a short time. ShuJIT does not perform such optimizations in its default setting.

500 x 500 system

IBM JDK 1.323.675
IBM JDK 1.1.817.994
HotSpot Server VM16.783
HotSpot Client VM15.035
GCJ (-O2 with .java)14.284
GCJ (-O2 with .class)13.813
shuJIT11.277
JBuilder JIT10.734
Kaffe10.584
OpenJIT 1.1.149.455
TYA9.449
GCJ (-O0 with .java)9.18
GCJ (-O0 with .class)7.96
sunwjit2.362
interpreter2.361
graph for Lipack benchmark

200 x 200 system

GCJ (-O2 with .java)26.41
GCJ (-O2 with .class)24.524
HotSpot Client VM16.349
IBM JDK 1.1.814.928
shuJIT14.306
OpenJIT 1.1.1313.464
GCJ (-O0 with .java)12.716
TYA11.444
JBuilder JIT11.257
OpenJIT 1.1.1410.899
Kaffe9.81
GCJ (-O0 with .class)9.671
IBM JDK 1.35.675
HotSpot Server VM (with -Xbatch opt.)3.54
interpreter2.384
sunwjit2.266
graph for Lipack benchmark

Eratosthenes Sieve

The TYA archive includes this benchmark as `demo/Sieve.java'.

These results were produced by Pentium 333 MHz and Linux 2.4.0. These values are operations per 10 seconds, so higher is better.

IBM JDK 1.32093
IBM JDK 1.1.81879
HotSpot Server VM (with -Xbatch option)1169
JBuilder JIT (JAVA_COMPILER_THRESHOLD set as `0')1076
Kaffe1140
HotSpot Client VM914
OpenJIT809
sunwjit755
shuJIT629
TYA586
interpreter124

Related Resources

The Java Performance Report
http://www.javalobby.org/features/jpr/
Java Grande Forum
http://www.javagrande.org/
Java Numerics (from 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

Back to


Copyright (c) 2000 Kazuyuki SHUDO
<shudoh@muraoka.info.waseda.ac.jp>