原文:Every
Programmer Should Know These Latency Numbers
L1 cache :………………………………………………..0.5ns
branch mispredict(轉移、分支預測) : ……………..5nsL2 cache :………………………………………………… 7ns
互斥鎖\解鎖 :…………………………………………….. 25ns
1k字節壓縮(Zippy) : …………………………………….3000ns = 3us
在1Gbps的網絡上發送2k字節 : ……………………….20,000ns = 20us
SSD隨機讀 :……………………………………………..150,000ns = 150us
從內存順序讀取1MB :…………………………………250,000ns = 250 us
同一個數據中心往返 :………………………………….500,000ns = 0.5ms
從SSD順序讀取1MB : …………………………………1,000,000ns = 1ms
磁盤搜索:…………………………………………………..10,000,000ns = 10ms
從磁盤裏面讀出1MB : …………………………………..20,000,000ns = 20ms
### Latency numbers every programmer should know
L1 cache reference ......................... 0.5 ns
Branch mispredict ............................ 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* ..... 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
Assuming ~1GB/sec SSD
![Visual representation of latencies](http://i.imgur.com/k0t1e.png)
Visual chart provided by [ayshen](https://gist.github.com/ayshen)
Data by [Jeff Dean](http://research.google.com/people/jeff/)
Originally by [Peter Norvig](http://norvig.com/21-days.html#answers)
Lets multiply all these durations by a billion:
Magnitudes:
### Minute:
L1 cache reference 0.5 s One heart beat (0.5 s)
Branch mispredict 5 s Yawn
L2 cache reference 7 s Long yawn
Mutex lock/unlock 25 s Making a coffee
### Hour:
Main memory reference 100 s Brushing your teeth
Compress 1K bytes with Zippy 50 min One episode of a TV show (including ad breaks)
### Day:
Send 2K bytes over 1 Gbps network 5.5 hr From lunch to end of work day
### Week
SSD random read 1.7 days A normal weekend
Read 1 MB sequentially from memory 2.9 days A long weekend
Round trip within same datacenter 5.8 days A medium vacation
Read 1 MB sequentially from SSD 11.6 days Waiting for almost 2 weeks for a delivery
### Year
Disk seek 16.5 weeks A semester in university
Read 1 MB sequentially from disk 7.8 months Almost producing a new human being
The above 2 together 1 year
### Decade
Send packet CA->Netherlands->CA 4.8 years Average time it takes to complete a bachelor's degree