使用位运算符的位运算速度

Speed of bit operations with bit operators

本文关键字:运算速度 运算符      更新时间:2023-10-16

假设我有

x &(num-1)

其中 x 是无符号的长整型长整型,num 是常规 int 和 & 是按位和运算符。

随着 num 值的增加,我的速度显着降低。 这是正常行为吗?

这些是受影响的代码的其他部分

int* hash = new int[num]
我不

认为按位运算变慢了,我认为你使用它的次数更多了。 可能甚至不是按位运算花费的时间太长,而是您执行的其他操作也花费了更多次。

使用探查器。

如果你在一个紧密循环中执行代码,你完全有可能看到性能随着更高的 num 而降低,我你的 C++ 编译器无法找到一个本机指令来执行 &与一个无符号的长长 - 正如你所说,你对 2 的每个幂都会变慢,那么我希望由 & 产生的代码反复"将 num"除以 2,直到它零并逐位执行。

另一种可能性是,您运行的 CPU 很糟糕,并且在固定的周期数内无法执行 AND。

问题解决了。 它与 CPU 缓存和位置有关。