在性能真正重要的重复算术运算中,按位运算符会对性能产生正面或负面影响吗?我试图谷歌它但无法得到明确的答案.
例如,我应该使用这个:
int s = 15 << 4;
或这个:
int s = 15 * 16;
改善我的应用程序的性能.
也做运算符优先级与性能相关联?
即使这些操作不会编译时间常数表达式(例如n << 4
),虚拟机将选择JIT编译过程中更快地实现,所以你可以在任何一种方式是最可读的为你写的.表现将是相同的.
这是HotSpot JVM C2 JIT编译器的C++代码,它将乘法替换为左移的幂数.下面你有一点可能会发现一些常量(如更换更优化n * 12
使用(n << 3) + (n << 2)
).