在下面的代码中,很明显 baa 总是错误的。热点编译器会发现这一点并删除 isBaa() 方法调用和包含的代码吗?
public class Foo() {
public final boolean baa = false;
public isBaa() {
return baa;
}
}
像这样的用法
static final Foo foo = new Foo();
public m() {
if (foo.isBaa()) {
// code here...
}
}
我想知道这段代码是否与添加相比
static final Foo foo = new Foo();
static final BAA = foo.isBaa();
并检查
if (BAA) ...
热点完成后对运行速度感兴趣。反正有没有真正看到热点编译的结果是什么?还是我们必须从正在使用的热点编译器的实现细节中推断出来。
用例是在对性能非常敏感的代码中通过最终变量支持 isDebugEnabled()。所以我对方法调用本身是否被优化感兴趣。