✅为什么按位与运算要比取模运算高效?

典型回答

我们在HashMap 的 hash 算法相关文章,以及分库分表的数量选择文章中,都提到过,按位与运算要比取模运算更加高效。

✅HashMap的hash方法是如何实现的?

✅分表数量为什么一般选择2的幂?

为什么呢?

首先,按位与运算(&)是计算机底层的基本操作,直接在二进制位上进行,由简单的逻辑门实现(AND 门),硬件电路非常简单,非常快速。他的时间复杂度是 O(1),处理每个位的操作在一个时钟周期内完成。

并且由于其简单性,编译器可以轻松地优化按位与运算。编译器在生成机器代码时,按位运算直接映射到单个机器指令。

而取模运算涉及除法操作,而除法操作比加法、减法和按位运算要复杂得多。因为在许多处理器架构中,除法运算通过迭代或流水线等复杂机制实现,导致其执行时间较长。虽然现代编译器对取模运算也进行了一定的优化,但由于其底层实现的复杂性,优化效果不如按位与运算明显。

原文: https://www.yuque.com/hollis666/xkm7k3/rgo8x0s28bgg46kd