每个程序员都应该了解一点“计算机系统中的时延”

作为程序员,经常需要和一些时延的单位打交道(如:秒 s、毫秒 ms、微秒 us、纳秒 ns),为了防止一不小心说错几个数量级,所以有必要了解计算机系统中的一些常见时延。

直接上图吧(网上搬运来的;找看得过去的高清大图也不容易~):

看图时,不要在意特别的细节,比如 L1 cache到底是0.9ns 还是 1.1ns,因为不同的系统、不同年份的硬件都不同,结果也是有所差异的。不要搞错数量级就行,如不能认为本地内存访问需要us微秒级别的时延。

作为一个补充,AWS的VPC网络内的时延大约15-20us,AWS两个AZ之间的时延2-3ms;北京到上海的网络时延30ms,TCP重传秒级(如:1-3秒)。

另外,收藏几个有趣的网页:
关于这些时延 + 一些有趣的评论:https://gist.github.com/hellerbarde/2843375
从1990年到2020年各种计算机器件的时延:https://colin-scott.github.io/personal_website/research/interactive_latency.html

早在2012年Google的大神Jeff Dean的一个分享中就是这么写到的:

Jeff Dean大神2012年的分享文档:http://static.googleusercontent.com/media/research.google.com/en/us/people/jeff/stanford-295-talk.pdf (推荐该材料 十多年前的 都是那么牛)

这篇文章不错 “CPU性能和CACHE”:https://plantegg.github.io/2021/07/19/CPU性能和CACHE/

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*