Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse中控制编译器选项_Java_Android_Eclipse_Optimization_Jvm - Fatal编程技术网

Java 在Eclipse中控制编译器选项

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

有没有一种方法可以控制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
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