This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: first test
Andrew Haley wrote:
This isn't a test of the compiler, because it spends almost of of its
time inside the library calls. It's really a test of the performance
of the different Java runtime libraries.
However, I get 3860 ms for the JIT compiler and 4613 ms for gcj. That
means that gcj's implementation of strings and/or memory allocation is
slightly slower.
Actually this test isn't really fair, because a JIT compiler can inline
the String.valueOf() call and discover that the whole loop is a no-op.
GCJ could eventually do this too if String.valueOf() doesn't cross a
binary boundary. Typically, however, programmers don't write code that
doesn't do anything, so this benchmark is not a valid test of real
application performance.
Here's a better variant:
public class Loop {
static final int N = 2500000;
public static String[] sa = new String[N];
public static void main(String[] args) {
long before = System.currentTimeMillis();
for (int i=0; i < N; i++){
int a = 27 + 3 * i;
sa[i] = String.valueOf(a) + "hello";
}
long after = System.currentTimeMillis();
System.out.println("time: " + (after-before));
}
}
For this case, I get 3203ms for "gcj -O2" and 5013ms for Sun Java 1.5 beta.
Regards
Bryce