这份列表由 Jeff Dean 提出,用于帮助程序员建立对计算机系统中各类操作相对开销的直觉。以下是经典版本(约2012年,后有若干修订)

Scenario Latency
L1 cache reference [1] 0.5 ns
Branch mispredict [2] 5 ns
L2 cache reference 7 ns
Mutex lock/unlock 25 ns
Main memory reference 100 ns
Compress 1K bytes with Zippy 3,000 ns (3 µs)
Send 2K bytes over 1 Gbps network 20,000 ns (20 µs)
SSD random read 150,000 ns (150 µs)
Read 1 MB sequentially from memory 250,000 ns (250 µs)
Round trip within same datacenter 500,000 ns (0.5 ms)
Read 1 MB sequentially from SSD [3] 1,000,000 ns (1 ms)
Disk seek 10,000,000 ns (10 ms)
Read 1 MB sequentially from disk 20,000,000 ns (20 ms)
Send packet CA->Netherlands->CA 150,000,000 ns (150 ms)

三个核心结论:(1) 缓存层级的影响极大,L1 比主内存快约 200 倍;(2) 网络和磁盘是真正的瓶颈,一次磁盘寻道约比L1访问慢十万倍;(3) 局部性至关重要,顺序读取远优于随机访问,在机械硬盘上尤其明显。

对于这个列表,不要死记具体数字,而要记住结构与比例。真正有用的是数量级直觉,而且精确数值本身会随硬件发展而变化。

可以通过按10的幂次把操作归入几个档位:

  1. 约1 ns是缓存与分支操作;

  2. 约 100 ns 是主内存;

  3. 约 1–10 µs 是小数据网络发送和压缩;

  4. 约 100 µs–1 ms 是 SSD 读取和数据中心往返;

  5. 约 10 ms 是磁盘寻道;

  6. 约 100 ms 是跨洲往返。

只要能判断某个操作落在哪一档,就已经掌握了这份列表 90% 的实用价值。

这份列表在2025-2026年还成立吗?

仍然成立的部分:整体结构,层级关系和相对顺序依然完全正确:缓存快于内存,内存快于存储,本地快于远程,顺序优于随机。L1约 1 ns、主内存约 100 ns 这两个数字依旧准确,因为 DRAM 的延迟在十多年里几乎没有改善(改善的是带宽)。跨洲往返的 150 ms 同样纹丝不动,因为它受光速限制,这是物理定律,无法优化。

明显过时的部分,变化最大的是 SSD:原列表基于 SATA SSD,假设随机读约 150 µs;而现代 NVMe 盘的随机读普遍在 10–20 µs 量级,高端型号更低。因此”SSD 比内存慢约一千倍”的旧直觉,如今更接近一百倍甚至更好。机械硬盘的 10 ms 寻道时间本身仍然准确,但在大多数性能敏感场景中已退居冷存储,这个数字变得不那么相关了。数据中心内部网络也有改善且差异极大,采用 RDMA 或高端网络架构可以做到远低于 10 µs,原来的 500 µs 已属保守。压缩数字则因 CPU 提速和 Zstd、LZ4 等新算法而变化,不过它本来更多是示意性质。

更深层的转变, 原列表以 CPU 和存储为中心。而在2025-2026年,大量性能关键工作涉及列表完全没有覆盖的内容:GPU 与加速器的内存层级(HBM 带宽、NVLink 等跨卡互连)、数据在加速器之间搬进搬出的高昂代价、以及 PCIe 传输开销。对于机器学习和数据密集型负载,这些才是工程师真正在推理的延迟数字,而 Jeff Dean 的原始列表诞生于这一切之前。

个人认为这份列表对于培养计算机工程直觉依然优秀甚至是持久的;但不应把其中的 SSD 和数据中心网络的原始数值用于 2025 年的实际工程决策——这些项已经改善了大约一个数量级。而受物理规律锁定的那些数字(缓存、内存延迟、跨洲往返)则一如既往地准确。