<分区>
我看到多个来源(这里有一些,以及维基百科上关于按位运算的文章)说使用位移计算比普通的乘法/除法/加法更快。但是,他们还提到,这仅适用于较旧的处理器,而且大多数现代处理器都做到了,因此速度几乎相等。
该声明的有效性如何?在 Java 或 C# 中仅使用常规数学操作数是否安全?是否真的有必要再使用位移位来替代这些操作数?
<分区>
我看到多个来源(这里有一些,以及维基百科上关于按位运算的文章)说使用位移计算比普通的乘法/除法/加法更快。但是,他们还提到,这仅适用于较旧的处理器,而且大多数现代处理器都做到了,因此速度几乎相等。
该声明的有效性如何?在 Java 或 C# 中仅使用常规数学操作数是否安全?是否真的有必要再使用位移位来替代这些操作数?
最佳答案
你只需将其留给编译器即可。好的编译器知道他们所针对的硬件。如果编译器知道按位运算更快,那么它可以发出代码来按位运算。您应该始终以最清晰的方式编写人类可读的代码,即正确表达正在执行的操作的方式。让编译器完成剩下的工作。
至于按位运算是否仍然可以比算术运算更快,我相信是的。当然,许多现代 C++ 编译器会生成使用按位运算进行算术运算的代码。
关于java - 在现代处理器上使用按位运算真的比常规数学运算更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10704931/