first test
Bryce McKinlay
mckinlay@redhat.com
Thu Jul 15 16:04:00 GMT 2004
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
More information about the Java
mailing list