@gnasher729's answer, Java için tamamen haklıyken, işte size göre.
Aşağıdaki sınıf dosyasına bakın:
import java.util.Date;
public class SoOne {
public static void main(String... args) {
long counter = 1;
long start = new Date().getTime();
while (1 == 1) { // other class has while (true)
counter += 1;
if (counter % 1000000 == 0) {
System.out.println("after: "
+ (new Date().getTime() - start)
+ ": " + counter
+ " per second: "
+ (counter
/(new Date().getTime() - start)));
}
}
}
}
Eğer f.ex. bu kaydederseniz SoOne.java
, satırı while (true)
olarak değiştirin, SoTrue.java
olarak kaydedin ve javac SoOne.java SoTrue.java
aracılığıyla derleyin, sınıf dosyalarını alırsınız. Bunlar
javap -c SoOne.class >so.javap
javap -c SoTrue.class >st.javap
aracılığıyla demonte edilebilir farklar
diff so.javap st.javap
1,3c1,3
< Compiled from "SoOne.java"
< public class SoOne {
< public SoOne();
---
> Compiled from "SoTrue.java"
> public class SoTrue {
> public SoTrue();
Yani derleyici gerçekten hem çekleri kaldırır vardır. En iyileştirme zamanı hakkında da ayrıca bkz.
https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize.
Dersi hatırla: "sonuçlar bana katı bir cevap vermek için çok fazla değişiklik gösterdi". Bu tür mikro optimizasyonlar genellikle ölçülemez bir etkiye sahiptir. (Davranışın koşullara bağlı olduğunu hesaba katmamak.) –
Genel bir cevap yoktur - dile bağlıdır. – assylias