I have a very compact code example (10 lines) for which running java interpreter on a class file takes 4.5s and executing optimized binary created from the class file with gcj takes 5.5s. Something is funny here. Can anyone explain what's happening?
% uname -a Linux localdomain 2.6.12-1.1372_FC3 #1 Fri Jul 15 00:59:10 EDT 2005 i686 i686 i386 GNU/Linux >>>>>>>>>>> The java code (X.java): import java.lang.*; import java.util.*; import java.io.*; public class X { public static void main(String[] args) { Random R = new Random(); for (int i=0; i < 10000000; i++) R.nextDouble(); } } >>>>>>>>>>The Makefile all: @javac X.java @echo "*** Interpreted:" @time java -classpath . X @gcj -O3 --main=X -o x X.java @echo "*** Compiled:" @time ./x >>>>>>>>>>Here is the output: *** Interpreted: 4.30user 0.02system 0:04.51elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1major+2734minor)pagefaults 0swaps *** Compiled: 5.55user 0.01system 0:05.58elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+2069minor)pagefaults 0swaps -- Summary: Java interpreter significantly faster than gcc?! Product: gcc Version: 3.4.4 Status: UNCONFIRMED Severity: normal Priority: P2 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: netzberg at gmail dot com CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23283