Java运算符性能算术与按位运算

raz*_*zak 2 java performance operators

在性能真正重要的重复算术运算中,按位运算符会对性能产生正面或负面影响吗?我试图谷歌它但无法得到明确的答案.

例如,我应该使用这个:

int s = 15 << 4;
Run Code Online (Sandbox Code Playgroud)

或这个:

int s = 15 * 16;
Run Code Online (Sandbox Code Playgroud)

改善我的应用程序的性能.

也做运算符优先级与性能相关联?

Tag*_*eev 6

即使这些操作不会编译时间常数表达式(例如n << 4),虚拟机将选择JIT编译过程中更快地实现,所以你可以在任何一种方式是最可读的为你写的.表现将是相同的.

这是HotSpot JVM C2 JIT编译器的C++代码,它将乘法替换为左移的幂数.下面你有一点可能会发现一些常量(如更换更优化n * 12使用(n << 3) + (n << 2)).