Skip to content

Commit 4646b09

Browse files
committed
Add Latency numbers every programmer should know section
1 parent 1f30e78 commit 4646b09

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

README.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1667,3 +1667,51 @@ Power Exact Value Approx Value Bytes
16671667
#### Source(s) and further reading
16681668

16691669
* [Powers of two](https://en.wikipedia.org/wiki/Power_of_two)
1670+
1671+
### Latency numbers every programmer should know
1672+
1673+
```
1674+
Latency Comparison Numbers
1675+
--------------------------
1676+
L1 cache reference 0.5 ns
1677+
Branch mispredict 5 ns
1678+
L2 cache reference 7 ns 14x L1 cache
1679+
Mutex lock/unlock 100 ns
1680+
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
1681+
Compress 1K bytes with Zippy 10,000 ns 10 us
1682+
Send 1 KB bytes over 1 Gbps network 10,000 ns 10 us
1683+
Read 4 KB randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
1684+
Read 1 MB sequentially from memory 250,000 ns 250 us
1685+
Round trip within same datacenter 500,000 ns 500 us
1686+
Read 1 MB sequentially from SSD* 1,000,000 ns 1,000 us 1 ms ~1GB/sec SSD, 4X memory
1687+
Disk seek 10,000,000 ns 10,000 us 10 ms 20x datacenter roundtrip
1688+
Read 1 MB sequentially from 1 Gbps 10,000,000 ns 10,000 us 10 ms 40x memory, 10X SSD
1689+
Read 1 MB sequentially from disk 30,000,000 ns 30,000 us 30 ms 120x memory, 30X SSD
1690+
Send packet CA->Netherlands->CA 150,000,000 ns 150,000 us 150 ms
1691+
1692+
Notes
1693+
-----
1694+
1 ns = 10^-9 seconds
1695+
1 us = 10^-6 seconds = 1,000 ns
1696+
1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns
1697+
```
1698+
1699+
Handy metrics based on numbers above:
1700+
1701+
* Read sequentially from disk at 30 MB/s
1702+
* Read sequentially from 1 Gbps Ethernet at 100 MB/s
1703+
* Read sequentially from SSD at 1 GB/s
1704+
* Read sequentially from main memory at 4 GB/s
1705+
* 6-7 world-wide round trips per second
1706+
* 2,000 round trips per second within a data center
1707+
1708+
#### Latency numbers visualized
1709+
1710+
![](https://camo.githubusercontent.com/77f72259e1eb58596b564d1ad823af1853bc60a3/687474703a2f2f692e696d6775722e636f6d2f6b307431652e706e67)
1711+
1712+
#### Source(s) and further reading
1713+
1714+
* [Latency numbers every programmer should know - 1](https://gist.github.com/jboner/2841832)
1715+
* [Latency numbers every programmer should know - 2](https://gist.github.com/hellerbarde/2843375)
1716+
* [Designs, lessons, and advice from building large distributed systems](http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf)
1717+
* [Software Engineering Advice from Building Large-Scale Distributed Systems](https://static.googleusercontent.com/media/research.google.com/en//people/jeff/stanford-295-talk.pdf)

0 commit comments

Comments
 (0)