在现代处理器上使用按位运算真的比常规数学快吗?

3 c# java bit-manipulation bit-shift operator-keyword

我已经看到多个来源(一些在这里,在维基百科关于按位运算的文章中)说使用比特移位来计算比正常的乘法/除法/加法更快.然而,他们还提到,这只适用于较旧的处理器,并且大多数现代处理器都使其速度几乎相等.

该声明的有效性如何?在Java或C#中使用常规数学操作数是否安全?是否正在使用bithifting作为那些真正需要的操作数的替代品?

Dav*_*nan 9

你只需将它留给编译器.好的编译器知道他们所针对的硬件.如果编译器知道按位操作更快,那么它可以发出代码来执行此操作.您应该始终以最清晰的方式编写人类可读代码,正确表达正在执行的操作的方式.让编译器完成其余的工作.

至于是否仍然可以按比例操作比算术更快,我相信它们是.当然,许多现代C++编译器将发出使用按位运算进行算术运算的代码.

  • 如果我的团队中的任何一个尝试使用按位操作进行算术运算,那么这将导致非常痛苦的代码审查会话! (6认同)
  • 我已经使用按位运算编写了代码,但是只有当我有严格的基准数字来演示改进的性能时,并且只有进行了非常彻底的代码审查会议时,才编写代码。 (2认同)