一种快速取模算法
原文中文,约4200字,阅读约需10分钟。
📝
内容提要
介绍一种快速取模算法,可对任意数取模,速度快于传统取模运算,要求入参和取模数量在 uint32 范围内,x 需在 [0,2^32) 范围内均匀分布,N 不能超过232,可实现对任意槽位数的快速取模。
🎯
关键要点
-
介绍了一种快速取模算法,速度快于传统取模运算。
-
该算法适用于任意数取模,要求入参和取模数量在 uint32 范围内。
-
x 需在 [0,2^32) 范围内均匀分布,N 不能超过 2^32。
-
传统取模运算消耗较多指令周期,常规哈希表实现中槽位数量通常为二的幂次。
-
使用二的幂次会导致内存浪费,尤其在数据量不大时。
-
新算法通过乘法和右移运算实现快速取模,效率高于传统取模。
-
算法证明了映射的均匀性,确保结果不会比传统取模差。
-
通过代码检测新算法的均匀性,结果显示新旧算法互有胜负,差值一般在 5% 以内。
-
性能测试表明新算法速度与二的幂次取模相当,是传统取模运算的两倍。
-
总结新算法特点:可对任意数取模,速度快,要求入参和取模数量在 uint32 范围内,x 需均匀分布。
🏷️