【发布时间】:2012-11-28 18:19:43
【问题描述】:
给定以下代码:
public class MainClass {
public static int f(){
int i=0;
i++;
return i;
}
}
编译器 javac 生成以下代码:
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
}
函数 f 做了非常简单的事情——它只返回 1。它的翻译如此直接,以至于我很难相信 java 编译器会进行任何优化。为什么 java 编译器的创建者决定在编译阶段不做这样的优化?
【问题讨论】:
-
编译器不是唯一的优化器。 JIT 编译器可能会在以后对其进行优化。
-
我认为大多数优化都是由 JIT 在运行时完成的。
标签: java optimization javac