把「日数」(rata-die)换算成星期几看似简单,实则是条深坑。作者 Ben Joffe 针对不同场景(吞吐优先/延迟优先、不同平台)给出了一整套比现有方案更快的函数,很多只需「一次乘法加两周期」,并发现 ISO 格式的星期(1-7)能用完全相同的指令仅靠调常数实现,且零性能损耗。文中最快的算法利用 7 是梅森数(2^N−1)的性质,把除法化约为乘法+移位,还扩展出 x%24、x%60 等可应用到计时的新型快速取模。
🔑 核心要点
利用 7 是梅森数的性质:N%7 = floor(N*8/7)%8,把模运算化约为乘法加右移。
通过「Z 旋转」常数可在 Unix 星期 [0-6] 与 ISO 星期 [1-7] 间切换,且零性能损失。