java 编译器(JDK1.6.0_21 中默认的 javac)是否优化代码以防止使用相同的参数反复调用相同的方法?如果我写这段代码:
public class FooBar {
public static void main(String[] args) {
foo(bar);
foo(bar);
foo(bar);
}
}
foo(bar)
方法只运行一次吗?如果是这样,有什么办法可以防止这种优化? (我正在尝试比较两种算法的运行时间,一种是迭代算法,一种是比较算法,我想多次调用它们以获得代表性样本)
任何见解将不胜感激;我把这个问题逼到了疯狂的地步(尽管我的计算机有一段时间快得离谱,所以我一直在添加方法调用,直到在第 43671 行出现code too large
错误)。
最佳答案
您观察到的优化可能与重复调用无关……因为那将是无效的优化。更有可能的是,优化器发现方法调用对计算没有明显的影响。
治疗方法是改变方法,使其确实影响计算结果......
关于重复方法调用的 Java 编译器优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3384766/