java - 位移 X 比位移 X 倍快吗?

标签 java bit-manipulation bit-shift

问题#1

在 Java 中,移位是否比使用单个语句将 移位相同数的代价高出数倍?

例如,是

int x = 5;
x = x << 16;

int x = 5;
for (int i=0; i<16; ++i) {
    x = x << 1;
}

更进一步,关于

int x = 5;
for (int i=0; i<16; ++i) {
    x = x*2;
}

编辑:“x << 16”的精确表现是什么?它与“x << 1”的速度相同吗?

问题#2

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

最佳答案

...so that I do not have to waste the time of StackOverflow users?

你也在浪费自己的时间。编写您的应用程序的完整原型(prototype),对其进行概要分析,然后对其进行优化。我敢肯定,您会发现瓶颈不是是因为移位。

这在很长一段时间内都有过早优化的味道。

What is the precise performance of "x << 16"? Is it the same speed as "x << 1"?

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

关于java - 位移 X 比位移 X 倍快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10315493/

相关文章:

计算设置了 k 位且大于另一个整数 x 的最小整数?

C 宏表达式返回值

java - 按字节操作交换字符串中的数字

java - 为什么我的电子邮件 EditText 保存在我的昵称 EditText 上?

java - Java 编译器是否针对不同的语言环境进行了翻译?

algorithm - VHDL - 带串联的 N 次移位运算

c - C 中无符号整型的右移位加 1

javascript - 使用位掩码确定是否设置了 2 个或更多 bool 值

基于代理的模型中的 Java NullPointerException

java - 将项目从 JDK 1.7 切换到 1.6 BufferedReader