Kann ein konformer Java -Compiler diesen Code optimieren?Java

Java-Forum
Anonymous
 Kann ein konformer Java -Compiler diesen Code optimieren?

Post by Anonymous »

Ich habe heute einen Einführungsprogrammierkurs unterrichtet und ging durch einen einfachen Code mit variablen Zuordnungen in Java. Der Punkt des Codes war nicht, etwas Besonderes aufregendes zu zeigen, sondern hauptsächlich, um sicherzustellen, dass die Schüler variable Zuweisungsanweisungen verstanden haben. und verzeichnete nacheinander eine Zeile: < /p>

Code: Select all

private void simpleMethod() {
int myInt = 137;
myInt = 42;
myInt = myInt + 1;

/* ... code using myInt ... */
}
< /code>

Ein Student fragte mich, ob MyInt < /code> die Werte 137 und 42 jemals halten würde, wenn das Programm lief, oder ob es einfach direkt zu 43 hält. Ich sagte dem Schüler, dass der Code nacheinander jede Zeile ausführen würde, sodass die Variable diese Zwischenwerte tatsächlich halten würde. Javac 
würde ausgehen (die Optimierungen des JVM vollständig ignorieren). Ist Javac (oder ein Java -Compiler) legal erlaubt, die albernen Zuweisungsanweisungen zu optimieren und stattdessen direkt MyInt bis 43?

initialisieren Laut Javap erzeugt der obige Code mit Javac

0: sipush 137
3: istore_1
4: bipush 42
6: istore_1
7: iload_1
8: iconst_1
9: iadd
10: istore_1
11: return
< /code>

Es gibt also keine Optimierung hier. Meine Frage ist jedoch, ob es legal ist, dies zu optimieren oder nicht, sodass dies nichts löst.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post