【发布时间】:2013-09-04 19:58:32
【问题描述】:
Java 编译器或 JIT 编译器是否将除法或乘法优化为以 2 的恒定幂向下移动?
例如,以下两个语句是否优化为相同?
int median = start + (end - start) >>> 1;
int median = start + (end - start) / 2;
(基本上是this question 但对于Java)
【问题讨论】:
-
这两条语句生成的字节码你看了吗?
-
请注意,有几个编译器。例如 javac 和 eclipse 中的那个。
-
@Julien 我也在考虑 JIT。
-
@WChargin:没错。查看字节码并找到除以 2,并不意味着 JIT 不能做不同的事情。
-
javac编译器几乎不做任何优化。只有 JIT 可以这样做,但我认为情况并非如此,因为操作不一样。
标签: java optimization compiler-construction javac