重复方法调用的 Java 编译器优化?

标签 java optimization compiler-construction compiler-optimization method-call

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/

相关文章:

java - 我们如何获取父包注释?有人提供示例吗?

c++ - 为什么在 C++ 中维护有序数组比 Vector 快

Java字符串替换

objective-c - 在 float 和 double 之间重复转换是否有任何开销

c - 代码有问题或者我的 IDE/comp 有问题吗?

java - 将代码块保存在变量中

java - jdbcAuthentication() 而不是 inMemoryAuthentication() 不提供访问权限 - Spring Security 和 Spring Data JPA

java - 将列表划分为组的算法

optimization - 在 windows vista 上加速 wamp server + drupal

Crenshaw 的 "Let' s Build a Compiler": Transcription to C and x86 Assembler?