位移X比位移X倍快?

Kir*_*rby 1 java bit-manipulation bit-shift

问题#1

在Java中,使用单个语句移动相同数量的转移费用是多倍?

例如,是

int x = 5;
x = x << 16;
Run Code Online (Sandbox Code Playgroud)

比...快

int x = 5;
for (int i=0; i<16; ++i) {
    x = x << 1;
}
Run Code Online (Sandbox Code Playgroud)

那么,怎么样

int x = 5;
for (int i=0; i<16; ++i) {
    x = x*2;
}
Run Code Online (Sandbox Code Playgroud)

编辑:"x << 16"的精确性能是什么?它与"x << 1"的速度相同吗?

问题2

我是否可以使用在线资源来确定Java中的各种按位操作性能,这样我就不必浪费StackOverflow用户的时间了?:-)

aio*_*obe 5

...这样我就不必浪费StackOverflow用户的时间了?

你也在浪费自己的时间.编写应用程序的完整原型,对其进行概要分析,然后对其进行优化.我很确定你会发现瓶颈不是由于位移.

这有点过早地优化过早的优化.

"x << 16"的精确性能是什么?它与"x << 1"的速度相同吗?

是的,它是一样的.但从技术上讲,它实际上取决于编译器,JVM实现,JIT,CPU架构...... 在这种情况下,Java规范不会对执行时间施加任何限制.