Hallo, ich habe eine Simulation geschrieben in Java 1.5. Diese funktioniert fehlerfrei, aber leider ist diese _sehr_ rechenaufwendig. Um eine Performancesteigerung zu erzielen möchte ich daher in einen binary-Code übersetzen. Ich denke ohne Byte-Code wird es einen guten Performace-Anstieg geben. Kann mir bitte einer einen guten Java 1.5 "binary"-Compiler nennen? tia Oli PS: Ich habe leider bisher mit google lediglicheine kommerzielle Varianten gefunden (www.xlsoft.com).
Am Dienstag, 25. Januar 2005 22:12 schrieb Tim Oliver Wagner:
Kann mir bitte einer einen guten Java 1.5 "binary"-Compiler nennen
http://gcc.gnu.org/java/? -- The cow is nothing but a machine with makes grass fit for us people to eat. -- John McNulty
Am Mittwoch, 26. Januar 2005 00:02 schrieb Michael Armbrecht:
Hi, merci ... genau soetwas habe ich gesucht. Es funktioniert auch einfach Programme zu compilieren. Leider ist meins nicht mehr ganz so klein ... ;-) Ein kleines sinnloses Programm sollte mir den Weg erleichtern. Leider schaffe ich es nicht mehr zu compilieren sobald ich zusätzliche Klassen integriere. Ich hoffe es kann mir jemand erklären warum dann sofort einige Fehlermeldungen auftauchen bzw. wie ich die Klassen erfolgreich mit kompiliere. Hier die Komandos für das kleine Beispiel: tow@linux:~> javac *.java tow@linux:~> gcj -g --main=Test -o Test Test.class tow@linux:~> ./Test hallo Welt! HALLO Who the chef! theTest!!! tow@linux:~> Sobald ich jedoch das Objekt Test2 einfügen möchte (also das Auskommentierte einbinde) gibt es Fehler! Woran kann das liegen/liegt das? Im Anhang sind die beiden kleinen Klassen. Würde mich über jede kleine (oder auch große ;-) ) Hilfe freuen. tia Oli
Michael Armbrecht wrote:
Am Dienstag, 25. Januar 2005 22:12 schrieb Tim Oliver Wagner:
Kann mir bitte einer einen guten Java 1.5 "binary"-Compiler nennen
Ich bezweifle, dass das einen merklichen Geschwindigkeitsvorteil bringt. Java ist von der Sprache her so konzipiert, dass sehr viel zur Laufzeit erledigt werden muss. Da benötigen auch kompilierte Programme ein aufwendiges (einkompiliertes) Laufzeitsystem. Mittlerweile machen die JVMs einiges an Optimierung, wenn man mit 1.1 vergleicht; diesen langen Weg hat der gcj wohl noch vor sich. Mein Vorschlag, wenn es wirklich zu langsam ist: Implementiere die zeitkritischen Sachen in C und binde sie per JNI ein. Gruß, Bernhard
Am Mittwoch, 26. Januar 2005 10:44 schrieb Bernhard Walle:
Michael Armbrecht wrote:
Am Dienstag, 25. Januar 2005 22:12 schrieb Tim Oliver Wagner:
Kann mir bitte einer einen guten Java 1.5 "binary"-Compiler nennen
Ich bezweifle, dass das einen merklichen Geschwindigkeitsvorteil bringt. Java ist von der Sprache her so konzipiert, dass sehr viel zur Laufzeit erledigt werden muss. Da benötigen auch kompilierte Programme ein aufwendiges (einkompiliertes) Laufzeitsystem.
Mittlerweile machen die JVMs einiges an Optimierung, wenn man mit 1.1 vergleicht; diesen langen Weg hat der gcj wohl noch vor sich.
Mein Vorschlag, wenn es wirklich zu langsam ist: Implementiere die zeitkritischen Sachen in C und binde sie per JNI ein.
Hi, merci für Deine Mail. Ich habe jedoch im Web Benchmarks gefunden und diese belegen einen 10 - 100 fachen Performancezugewinn. Wenn jetzt in 4 Min 10 Simulationen beendet sind anstatt lediglich eine ... das wäre schon echt prima! :-) Aber leider funktioniert es nicht :-(. Der IBM JIT-Compiler soll Code zwischen 10 und 100x schneller ausführen, aber die 1.4.2 bringt mir leider nix. :-( Hoffe es kann mir noch jemand weiterhelfen. Grüßle Oli
Tim Oliver Wagner wrote:
merci für Deine Mail. Ich habe jedoch im Web Benchmarks gefunden und diese belegen einen 10 - 100 fachen Performancezugewinn.
Vielleicht bei konstruierten Beispielen. Ich will nicht so recht dran glauben, man findet für alles Benchmarks, auch dafür, dass C++ langsamer ist als Java (siehe c't, nur leider hatte der Programmierer nicht viel Ahnung wie man ordentliche C++ Programme schreibt). Aber ich wünsch dir, dass es funktioniert. Als "Real World" Beispiel für den gcj kannst du dir mal pdftk anschauen. Da wird eine Java Bibliothek in einem C++ Programm verwendet, der Java-Code wird mit dem gcj kompiliert, das ganze funktioniert sehr gut. URL: http://www.accesspdf.com/pdftk/ Gruß, Bernhard
Am Mittwoch, 26. Januar 2005 15:17 schrieb Tim Oliver Wagner:
Der IBM JIT-Compiler soll Code zwischen 10 und 100x schneller ausführen, aber die 1.4.2 bringt mir leider nix. :-(
IBMs JIT wirkt teilweise wirklich Wunder. In der Größenordnung kann ich zwar nicht dienen, aber Faktor 4 hatte ich bei einer Batchverarbeitung auch schon mal im Vergleich zu Blackdown/Sun. Dass demgegenüber ein Binary-Compiler noch sehr viel bringt, glaube ich aber kaum, denn einmal vom JIT umgewandelt, hast Du auch Maschinensprache im Cache. Was speziell verwendest Du denn, was unter 1.4.2 nicht funktioniert? -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
Am Mittwoch, 26. Januar 2005 20:12 schrieb Manfred Tremmel:
Am Mittwoch, 26. Januar 2005 15:17 schrieb Tim Oliver Wagner:
Der IBM JIT-Compiler soll Code zwischen 10 und 100x schneller ausführen, aber die 1.4.2 bringt mir leider nix. :-(
IBMs JIT wirkt teilweise wirklich Wunder. In der Größenordnung kann ich zwar nicht dienen, aber Faktor 4 hatte ich bei einer Batchverarbeitung auch schon mal im Vergleich zu Blackdown/Sun. Dass demgegenüber ein Binary-Compiler noch sehr viel bringt, glaube ich aber kaum, denn einmal vom JIT umgewandelt, hast Du auch Maschinensprache im Cache.
Was speziell verwendest Du denn, was unter 1.4.2 nicht funktioniert?
Ich habe es jetzt komplett umgeschrieben, damit es unter 1.4.2 compiliert ... war das eine "s..-Arbeit" ... naja, jetzt funktioniert es ... jedoch bekomme ich mit gcj keine Performanceverbesserung ... wie kann ich mit dem IBM JIT kompilieren?? Kann man den irgendwo runterladen? Oder ist der auch für Privatpersonen kostenpflichtig? tia Oli
Am Mittwoch, 26. Januar 2005 21:29 schrieb Tim Oliver Wagner:
wie kann ich mit dem IBM JIT kompilieren?? Kann man den irgendwo
Es ist ein Just in Time Compiler, sprich wenn Du das Programm mit 'java xyz.class' startest, verrichtet er seinen Dienst. Neu compilieren ist dafür nicht notwendig.
runterladen? Oder ist der auch für Privatpersonen kostenpflichtig?
Kannst du bei IBM kostenlos runterladen, nur registrieren musst Du Dich: https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=lxdk&lang=de_DE -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
participants (4)
-
Bernhard Walle
-
Manfred Tremmel
-
Michael Armbrecht
-
Tim Oliver Wagner