更快地把时间戳拆成时分秒:打破依赖链后只需两次乘法
来源: benjoffe.com — 2026-09-07
概述
几乎所有主流日期库都把「把一天的秒数拆成时分秒」当作一条约 16 个 CPU 周期的串行计算链来处理,作者却证明这件事可以压缩到只有两次乘法的延迟。思路有两条:一是重排计算步骤,打散 hour→minute→second 之间完全串行、无法重叠的依赖链,让三路除法能并行跑;二是用定点乘法替换整数除法,更进一步把 base-60 的时钟换算成二进制友好的 base-64「魔法数」来做廉价除法。实测在 Apple M4 Pro 与 AMD Ryzen 上,新算法把延迟和吞吐都压到传统方案的 40%–70%,文章还延伸讨论了毫秒级单位、闰秒处理与 ARM Neon SIMD 优化。
核心要点
- 传统日期库用 hour→rem→minute→second 的完全串行依赖链,各步无法重叠并行
- 把整数除法换成定点 mul-shift,并重排让小时/分钟/秒并行计算,是提速的关键
- 进一步把base-60 时钟换算成 base-64,用对 64 友好的魔法数做廉价除法
- 在 M4 Pro 与 Ryzen 上,新算法延迟可降到传统方案的一半以下
金句
A daily timestamp [0..86399] can be converted into Hour, Minute and Second – with the latency of only two multiplications.
👍 0
👎 0
返回 Lobsters 首页