Dato il seguente codice:Perché javac non ottimizza nemmeno un codice semplice?
public class MainClass {
public static int f(){
int i=0;
i++;
return i;
}
}
il javac compilatore genera il seguente codice:
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
}
Funzione f fa cosa molto semplice - semplicemente restituisce 1. E 'così direttamente tradotto che mi rende difficile credere che il compilatore java faccia delle ottimizzazioni. Perché i creatori di compilatori Java hanno deciso di non eseguire tali ottimizzazioni nella fase di compilazione?
Il compilatore non è l'unico ottimizzatore. Il compilatore JIT può ottimizzarlo in seguito. – reprogrammer
Penso che la maggior parte delle ottimizzazioni vengano eseguite in fase di esecuzione dal JIT. – Mysticial