Computer
系统性能
计算机系统性能指标与延迟数字,帮助程序员理解各层级操作的时间量级差异
程序员应该知道的延迟数字
理解计算机系统中各种操作的延迟数量级,是做出正确架构决策的基础。 Jeff Dean(Google 资深研究员)和 Peter Norvig 整理的这些数字展示了从 CPU 缓存到跨洋网络请求的惊人差异。
核心延迟参考(按数量级分层):
| 量级 | 操作 | 延迟 |
|---|---|---|
| 纳秒级 | L1 缓存引用 | ~1 ns |
| 分支预测失败 | ~3-10 ns | |
| L2 缓存引用 | ~4-13 ns | |
| 互斥锁 lock/unlock | ~25-50 ns | |
| 百纳秒级 | 主内存引用 | ~100 ns |
| Zippy 压缩 1KB | ~6,000 ns | |
| 十微秒级 | 网络传输 2KB | ~10,000 ns |
| SSD 随机读取 | ~16,000 ns | |
| 内存顺序读取 1MB | ~250,000 ns (0.25 ms) | |
| 同数据中心往返 | ~500,000 ns (0.5 ms) | |
| 毫秒级 | SSD 顺序读取 1MB | ~1,000,000 ns (1 ms) |
| 机械磁盘寻道 | ~10,000,000 ns (10 ms) | |
| 磁盘顺序读取 1MB | ~20,000,000 ns (20 ms) | |
| 加州↔荷兰网络往返 | ~150,000,000 ns (150 ms) |
关键洞见: 不同操作之间存在数个数量级的差异。 L1 缓存访问比主内存快约 100 倍,而内存又比磁盘随机访问快约 10 万倍。 这种数量级思维帮助工程师在存储介质选择、缓存策略、网络架构等方面做出合理权衡—— 精确数值会随硬件演进变化,但数量级关系保持相对稳定。