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