c++ - 逻辑/算术移位越少位越快吗?

标签 c++ performance assembly x86 cpu-architecture

<分区>

x>>2 是否比 x>>31 快? 换句话说,sar x, 2 是否比 sar x, 31 快? 我做了一些简单的测试,他们似乎有相同的速度。如果有任何确凿的证据,我将不胜感激。

最佳答案

这取决于硬件实现。对于涉及常量移位的常见操作(例如指针算术),可能有更快的路径(例如它可能与相关的加法操作融合)。对于按变量移动,barrel shifter使用电路,其中任何移位量都会有相同的延迟。

关于c++ - 逻辑/算术移位越少位越快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67081682/

相关文章:

c++ - 为什么需要同时使用 fixed 和 showpoint 操纵器来显示小数点和尾随零,而只有 fixed 才能完成这项工作?

IPX/SPX 和 TCP/IP 的性能

c++ - 一种通过 ID 访问并查找加权随机项的高效数据结构

Crenshaw 的 "Let' s Build a Compiler": Transcription to C and x86 Assembler?

assembly - 如何在 x86_64 asm 中调用 malloc

c++ - 指向自创建结构的双指针 - 编译器说 OK - 程序中止

c++ - 数组和文件大小的数据类型

Qt 应用程序中的 c++ boost::thread() - 错误:函数参数太多

r - 随着数据框变大,如何防止 rbind() 变得非常慢?

c - GCC优化错失良机