Gegeben folgender Code:
%Vor%Der Compiler javac erzeugt folgenden Code:
%Vor%Funktion f macht wirklich einfache Sache - es gibt nur 1 zurück. Es ist so direkt übersetzt, dass es mir schwer fällt zu glauben, dass Java Compiler überhaupt irgendwelche Optimierungen macht. Warum haben sich Java-Compiler-Entwickler entschieden, solche Optimierungen in der Kompilierungsphase nicht zu machen?
Wird so direkt übersetzt, dass ich kaum glauben kann, dass der Java-Compiler überhaupt Optimierungen vornimmt.
Tatsächlich. Die meisten Java-Optimierungen werden stattdessen zur JIT-Zeit durchgeführt. Die Java-Betreuer haben vor einiger Zeit herausgefunden, dass Optimierungen, die bei der Kompilierzeit durchgeführt wurden, in vielen Fällen wichtigere Optimierungen zur JIT-Zeit verhindert haben.
Seit einigen Jahren hat das Befehlszeilenargument -O
nichts getan - und zwar absichtlich.
Durch die Umstellung der Optimierung auf JVM können auch alle JVM-basierten Sprachen profitieren. Compiler (nicht nur Javac) haben eine relativ einfachere Arbeit; Spracherfinder müssen keine Optimierungsexperten sein.
Tags und Links java optimization javac