Java Performance
The 3.1/3.1.1 releases provide a number of performance enhancements
over version 3.0.1. For a set of medium-size applications
(javac, for example) whose performance we measured, this
release is 20% faster on average than the 3.0.1 release. Here are
some of the reasons:
- MIPS n32 ABI: Use of the MIPS n32 ABI allows for more
efficient parameter-passing and handling of the
long and
double data types in the code produced by the JIT
compiler.
- Native Threads: Running with native threads on a
multiprocessor machine can provide significant benefits for programs
that are structured for multiple simultaneous threads of computation
with little or no synchronization.
- Faster Synchronization: Thread synchronization (necessary
for synchronized blocks and methods) has long been known to be a
bottleneck in many Java virtual machines. In this release of our Java
implementation, acquiring and releasing uncontested locks (the most
common case) is much faster than with the 3.0.1 release. This has
reduced the typical overhead of a synchronized method call by a factor
of 3-4x.
- Per-method JIT: Previously, each class file was completely
translated as it was loaded. Now, methods are translated the first
time they are executed, so no unnecessary translation is done. The
memory footprint of the JIT is now smaller (sometimes by 20-30%), and
the capability to pre-translate class files using the javat
command is no longer beneficial and has been removed, which saves disk
space as well.
For some applications, we have actually seen slight degradation in
performance since the 3.0.1 release. In most cases, we have isolated
this degradation as being due to moving from Sun's JDK 1.1.3 release
to 1.1.4 and then 1.1.5. If you have an important application for
which performance has degraded since the 3.0.1 release, we would be interested in hearing
from you.
For more information on the performance of Java on SGI systems, see
our
site on Silicon Surf.
Java and other Java-based names are trademarks of Sun Microsystems, Inc.,
and refer to Sun's family of Java-branded technologies. Sun, Sun Microsystems,
and the Sun Logo are trademarks or registered trademarks of Sun Microsystems,
Inc. in the U.S. and other countries.