performance problems with classpath 0.09 on Jikes RVM
From:
David P Grove
Subject:
performance problems with classpath 0.09 on Jikes RVM
Date:
Fri, 7 May 2004 13:38:25 -0400
I'm doing some initial performance comparisons
of classpath 0.08 and classpath 0.09 on Jikes RVM (cvs head). I've
found that the performance of _228_jack (one of the SPECjvm98 benchmarks)
suffers a serve degradation on classpath 0.09. It is twice as slow
(10 seconds vs 5 seconds on my machine with a production version of Jikes
RVM cvs head) with the only difference being the version of classpath.
An initial investigation seems to point
the finger at the changes in the classpath I/O layers between these two
versions. In particular, the profiling data suggests a large increase
in both direct and indirect costs of I/O due to the implementation of gnu_java_nio_channels_FileChannelImpl.get_native_fd
which is doing 3 JNI calls per invocation, two of which are going to convert
strings from C => Java causing allocation in the VM and driving up the
GC rate (time spent in GC doubles looking at classpath 0.08 vs. classpath
0.09).
I think there is a relatively easy fix
to this particular problem by computing and caching the fieldId as part
of the init method. I'm willing to play with this and provide a patch
if this does ease the performance degradation. But I did want to
check to see if (1) anyone else has noted the problem and (2) if a fix
is already being prepared.