每个程序员都应该知道的延迟数字

动作 时间 换算
L1 缓存访问 0.5 ns 0.5ns
分支预测错误 5 ns 5ns
L2 缓存访问 7 ns 7 ns
互斥锁/解锁 25 ns 25 ns
内存访问 100ns 100ns
使用 Zippy压缩 1KiB 3,000 ns 3 µs
通过 1 Gbps 网络发送 2KiB 20,000 ns 20 µs
SSD 随机读取 150,000 ns 150 µs
内存中连续读取 1 MB 250,000 ns 250 µs
同一个数据中心的来回 500,000 ns 0.5 ms
从 SSD 上连续读取 1 MB* 1,000,000 ns 1 ms
机械磁盘寻道 10,000,000 ns 10 ms
机械磁盘连续读取 1 MB 20,000,000 ns 20 ms
发送数据包 加州->荷兰->加州 150,000,000 ns 150 ms
  • 假设 ~1GB/sec SSD
    如果把这些时长都乘以 10 亿的话:
动作 时间 换算
L1 缓存访问 0.5 s 一次心跳 (0.5 s)
分支预测错误 5 s 打个哈欠
L2 缓存访问 7 s 打个长哈欠
互斥锁/解锁 25 s 冲一杯咖啡
内存访问 100 s 刷牙
使用 Zippy压缩 1KiB 50 min 50 min
通过 1 Gbps 网络发送 2KiB 5.5 hr 从午餐到下午工作结束
SSD 随机读取 1.7 days 一个普通的周末
内存中连续读取 1 MB 2.9 days 一个长周末
同一个数据中心的来回 5.8 days 一个普通假期
从 SSD 上连续读取 1 MB* 11.6 days 等快递等了两周
机械磁盘寻道 16.5 weeks 大学里的一个学期
机械磁盘连续读取 1 MB 7.8 months 几乎能造个人了
上面两个加起来 1 year 整整一年
发送数据包 加州->荷兰->加州 4.8 years 快能读个博士了

可视化网页: https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html

这些数字的作用是什么?

了解这些时间的量级有助于比较不同的解决方案。通过这些数字,你可以看出来从远程服务器的内存中读一些数据时比直接从硬盘上读取快的。在一般的程序中,这也就意味着使用磁盘存储比使用数据库服务器要慢,因为数据库通常把所有东西都放在内存里了。而且这也说明了为什么在服务全球客户的时候 CDN 至关重要。从北美到欧洲的一个 ping 就要花上 100+ ms,所以从地理上来说,内容应该是分布式部署的。

The idea is more about knowing the scale of time it takes to help compare different solution. With those number you can see that it's faster to get data in memory from a distant server than to read the same data from disk. In common application that means using disk storage is less efficient that storing it in a database on an other server, since it usually keeps almost everything in memory. It also tells a lot about why CDN are needed if you are serving client worldwide. A ping from North America to Europe will always takes 100+ ms, so having geographically distributed content is a good idea.

对于互斥锁的开启锁定时间 mutex lock/unlock time is important for anyone writing code that depends on code that is accessing the same data structures at the same time. If you don't know that there is a considerable cost to writing such code, now you do; and this number can quantify it.

还需要注意顺序读写和批量读写带来的提速

常见问题

随着摩尔定律的发展,这些数字会不会不太准确了?
首先摩尔定律基本上经失效了。其次,这些数字的重点是他们之间的比例,而不是具体数字。

参考:


http://yifei.me/note/566

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335