在性能非常重要的重复算术运算中,按位运算符对性能有正面还是负面影响?我尝试用 Google 搜索,但找不到明确的答案。
例如我应该使用这个:
int s = 15 << 4;
或者这个:
int s = 15 * 16;
提高我的应用程序的性能。
operator precedence也是如此与性能相关吗?
最佳答案
即使这些操作不是compile-time constant expressions (例如 n << 4
),虚拟机会在 JIT 编译期间选择更快的实现,因此您可以采用对您来说最易读的任何一种方式进行编写。性能将是相同的。
这是the C++ code HotSpot JVM C2 JIT 编译器使用左移替换了 2 的幂乘法。在下面,您可能会发现一些常量的更多优化(例如将 n * 12
替换为 (n << 3) + (n << 2)
)。
关于Java 算术运算符与按位运算符的性能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34672262/