有没有办法控制Eclipse在构建项目时使用的java编译器的优化级别? 还是这个问题不再相关,是否所有优化都推迟到虚拟机?
我问的原因是我最近写了一个快速测试:
private static int test_f(int i) { return i * 42; }
...
int z = 41;
for(int i = 0; i < 10000; ++i) { z = z*42; } // this loop runs in X seconds
for(int i = 0; i < 10000; ++i) { z = test_f(z); } // this loop runs in 10*X seconds
这个测试的结果 imples test_f() 没有被内联,即使它确实 是它的主要候选人。也应该可以在编译时执行此内联。
环境/目标虚拟机是 Android/Dalvik。
更新: 我对此进行了进一步调查,结果发现 Dalvik 目前不进行内联。
最佳答案
是的,现在桌面 Java 的优化基本上是由 JIT 完成的,所以编译器不会做内联之类的事情。 -O
现在甚至没有被 javac
列为一个选项(尽管它不会破坏编译;我怀疑它没有什么区别)。
不要忘记 Dalvik 没有 JIT。
关于java - 在 Eclipse 中控制编译器选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1529766/