den folgenden Code Gegeben:Warum javac optimiert nicht einmal einfachen Code?
public class MainClass {
public static int f(){
int i=0;
i++;
return i;
}
}
der javac-Compiler erzeugt den folgenden Code:
Compiled from "MainClass.java"
public class latte_jvm.MainClass {
public static int f();
Code:
0: iconst_0
1: istore_0
2: iinc 0, 1
5: iload_0
6: ireturn
}
Funktion f ist wirklich einfache Sache - es 1. nur Returns es so direkt übersetzt, dass es mir schwer macht, zu glauben, dass der Java-Compiler überhaupt Optimierungen vornimmt. Warum haben sich Java-Compiler-Ersteller entschieden, solche Optimierungen in der Kompilierungsphase nicht zu machen?
Der Compiler ist nicht der einzige Optimierer. Der JIT-Compiler kann sie später optimieren. – reprogrammer
Ich denke, die meisten Optimierungen werden zur Laufzeit vom JIT durchgeführt. – Mysticial