Java 在Eclipse中控制编译器选项
有没有一种方法可以控制Eclipse在构建项目时使用的java编译器的优化级别? 或者这个问题不再相关了,所有的优化都是由虚拟机来完成的吗 我之所以这么问是因为我最近写了一个快速测试:Java 在Eclipse中控制编译器选项,java,android,eclipse,optimization,jvm,Java,Android,Eclipse,Optimization,Jvm,有没有一种方法可以控制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
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
private static int test_f(int i){return i*42;}
...
int z=41;
对于(inti=0;i<10000;++i){z=z*42;}//此循环在X秒内运行
对于(int i=0;i<10000;++i){z=test_f(z);}//此循环在10*X秒内运行
这个测试的结果意味着test_f()没有内联,即使它确实是内联的
是它的主要候选人。也可以在编译时进行这种内联
环境/目标vm是Android/Dalvik
更新:
我进一步研究了这一点,发现Dalvik目前没有进行内联。是的,现在桌面Java的优化基本上是由JIT完成的,所以编译器不会进行类似内联的操作<近来,
javac
甚至没有将code>-O列为选项(尽管它没有破坏编译;我怀疑它没有什么区别)
别忘了Dalvik没有JIT