每个程序员都应该了解的延迟数字
Jeff Dean 在他关于分布式系统的 ppt [1] 中列出了“每个程序员都应该了解的数字(Numbers Everyone Should Know)”,对计算机各类操作的耗时做了大致估计。这些数字在很多地方都很有用, 了解这些数字有助于我们在系统设计时比较不同的解决方案,挑选一个最优的方案。
这些数字大多是 2009 年给出的,计算机发展到今天, 内存、SSD 和机械硬盘顺序读取速度有了非常大的提升,导致 这些数字有些过时,下面给出2020年左右的一些数据。
需要注意的是我们 重点在于关注这些延迟数据之间的数量级和比例 ,如寄存器/L1/L2缓存的访问时间在ns级别 左右;内存访问速度大约是 磁盘访问速度的10w倍。而不是纠结于寄存器的访问时间究竟是几ns,这也不可能有一个统一的答案,因为每台计算机的硬件不一样性能 也不一样。
1ns级别: 对cpu寄存器的访问在1ns这个级别。现代cpu的时钟周期也在1n秒范围内。
1-10ms级别:L1/L2缓存的访问时间以及一些复杂的cpu指令的执行时间都在这个级别。1-10ns级别: L1/L2缓存的访问时间以及一些复杂的cpu指令的执行时间都在这个级别。
推荐阅读:
专注服务器后台技术栈知识总结分享
欢迎关注交流共同进步
码农有道 coding
码农有道,为您提供通俗易懂的技术文章,让技术变得更简单!
评论