有没有办法控制Eclipse在构建项目时使用的java编译器的优化级别? 或者这个问题不再相关,是否所有优化都推迟到vm?
我问的原因是我最近写了一个快速测试:
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
这个测试实现的结果test_f()没有内联,即使它确实如此 是它的主要候选人。也应该可以在编译时进行内联。
环境/目标vm是Android / Dalvik。
更新: 我进一步调查了这一点,结果发现Dalvik在这个日期没有内联。
答案 0 :(得分:2)
是的,优化基本上是由桌面Java的JIT完成的,所以编译器不会做像内联这样的事情。这些天-O
甚至没有将javac
列为选项(虽然它不会破坏编译;我怀疑它没有任何区别)。
不要忘记Dalvik 没有 JIT。