Warum optimiert javac nicht einmal einfachen Code?

8

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?

    
Marcin 28.11.2012, 18:19
quelle

2 Antworten

17
  

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.

    
Jon Skeet 28.11.2012, 18:21
quelle
6

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.

    
irreputable 28.11.2012 20:17
quelle

Tags und Links