This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: my crude benchmark results



On Jul 13, 2004, at 4:57 AM, Andrew Haley wrote:


John Gabriele writes:
[snip]
Ok,.. heaven forgive me for the cycles I am about to burn...

Time taken to run:

     in C:
     8.5 seconds

     Java via Apple's JVM:
     22.2 seconds

     Java via GCJ:
     25.5 seconds

[snip]
gcj has its own math library that is very accurate but doesn't use the
FPU's builtins.  Turn that off with -ffast-math.

$ gcc main.c -O3 -lm -ffast-math
$  time ./a.out
Size = 50000
Sum = 50000.000000
2.81user 0.01system 0:02.83elapsed 99%CPU

Ahhh... Thanks for the tips.


for main.c, no change.


$ gcj Main.java --main=Main -O3 -ffast-math $ time ./a.out Size = 50000 Sum = 50000.0 3.53user 0.03system 0:04.19elapsed 84%CPU

Java is slighty slower, probably because of bounds checks and
synchronization.

Trying without bounds checks, to be a more accurate comparison with C:

$ gcj Main.java --main=Main -O3 -save-temps -ffast-math -fno-bounds-check
$ LD_LIBRARY_PATH=/usr/local/lib time ./a.out
Size = 50000
Sum = 50000.0
3.42user 0.03system 0:03.48elapsed 98%CPU


21% slower. I can live with that.

Andrew.


Ok, using GCJ, AOT compiled, summary of my results: no -O3: 25.5 seconds with -O3: 24.2 seconds ( 5.1% improvement) with -O3 and -ffast-math: 23.2 seconds ( 9.0% improvement) also no-bounds-check: 22.2 seconds (12.9% improvement)

... this reminds me that we should try to get bounds check elimination
into gcj before 3.5.

Oooh, a compile-time option to skip bounds-checking? Sweet.


James Damour wrote:
P.S. Looking at the numbers, I think that Mr. Gabriel didn't use GCJ to
"ahead of time" compile the java code.

I created my gcj-aot compiled most-optimized binary like so:
gcj Main.java --main=Main -O3 -save-temps -ffast-math -fno-bounds-check -o jfastest.out
and I've never even used gij.


Recall, I'm on a Mac here -- a PPC G3 -- so GCJ may optimize differently here
than on an Athlon. Also, Apple's JVM may be very different from Sun's (or
Blackdown's) JVM.


P.P.S Mr. Gabriel, when you post your code where others can read it,
kindly include *some* sort of license.  Otherwise no one can legally
display your code due to copyright limitations.

Thanks for the heads-up. I figured a trivial one-pager like that didn't
require any sort of license. In fact, it's pretty sad that this would even
come up over that teency bit of code (no offense to you -- you're just
pointing it out).


Oh -- and call me "John"!
:)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]