FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Java, javac & gcj

Java, javac & gcj 2004-10-09 22:40
chris
Moin,
im Zuge des SWT-Praktikums fiel mir gcj auf, der GNU Java Compiler.
Größere Sachen damit zu übersetzen ist mir zwar noch nicht so ganz gelungen, aber bei ner Testklasse überraschte mich schonmal das das Ding wesentlich schneller zu laufen scheint als der Bytecode-Interpreter:

chris@gomorrha:~/fibonacci$ javac Fibonacci.java chris@gomorrha:~/fibonacci$ gcj -o fibonacci --main=Fibonacci Fibonacci.java chris@gomorrha:~/fibonacci$ gcj -static -o fibonacci.static --main=Fibonacci Fibonacci.java chris@gomorrha:~/fibonacci$ time java Fibonacci 500 Sum: 365014740723634211012237077906479355996081581501455497852747829366800199361550174096573645929019489792750 real 0m0.191s user 0m0.130s sys 0m0.010s chris@gomorrha:~/fibonacci$ time ./fibonacci 500 Sum: 365014740723634211012237077906479355996081581501455497852747829366800199361550174096573645929019489792750 real 0m0.164s user 0m0.100s sys 0m0.010s chris@gomorrha:~/fibonacci$ time ./fibonacci.static 500 Sum: 365014740723634211012237077906479355996081581501455497852747829366800199361550174096573645929019489792750 real 0m0.067s user 0m0.020s sys 0m0.010s
Der Compiler selbst ist auch schneller:

chris@gomorrha:~/fibonacci$ time javac Fibonacci.java real 0m0.938s user 0m0.750s sys 0m0.010s chris@gomorrha:~/fibonacci$ time gcj -o fibonacci --main=Fibonacci Fibonacci.java real 0m0.296s user 0m0.210s sys 0m0.040s
Nun würde mich interessieren wie das unter Windows aussieht…
gcj für Windows gibts u.a. auf http://www.mingw.org/. Hat jemand Lust das mal auszutesten?

Die Testklasse:
http://www.ezshare.de/files/26268/Fibonacci.java.html

Re: Java, javac & gcj 2004-10-11 08:39
jr
iirc liegt das daran dass gcj plattformspezifische Binaries erzeugt und nicht reinen Bytecode. Da sind bestimmt schon so einige Dinge getan/initialisiert die beim Aufruf des generischen Interpretners noch gemacht/initialiisiert werden muessten.

Ich vermute mal wenn man ein Problem mit einer laengeren Laufzeit betrachtet relativiert sich dieser Vorteil.

/jr