Gau*_*tam 5 java android javac dalvik compiler-optimization
我有以下代码
float square(float val) { return val*val;}
boolean isInCircle(final float x,final float y) {
float squareDistance = square(cx - x) + square(cy - y);
return squareDistance < square(RADIUS);
}
Run Code Online (Sandbox Code Playgroud)
这里RADIUS是一个static final float.
java编译器会优化调用square(RADIUS)吗?
转换为dalvik代码时会发生什么android?它会保持优化吗?
Java 中的优化(据我所知)是由HotSpot 编译器在运行时完成的(字节码在转换为机器代码时进行了优化)。所以答案是肯定和否定。
转换后的代码将同样得到优化,但这取决于 JVM,将如何处理它。根据我的经验,它高度依赖于 JVM 并且可能依赖于它的设置(优化器的主动性)。我尝试比较 SHA1 在 Windows JVM 和 Linux 上的带循环和不带循环的运行。在一种情况下,没有循环的代码要快很多倍,而在第二种情况下(我认为在 Linux 上),只有大约 40% 的时间差异......
所以这是一个魔法,你可能会给 HotSpot 很好的优化提示,或者配置 JVM,但是,这仍然取决于 JVM 的当前算法......
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |