10Sep/150
Latency numbers every programmer should know
L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns 14x L1 cache Mutex lock/unlock 25 ns Main memory reference 100 ns 20x L2 cache, 200x L1 cache Compress 1K bytes with Zippy 3,000 ns Send 1K bytes over 1 Gbps network 10,000 ns 0.01 ms Read 4K randomly from SSD* 150,000 ns 0.15 ms Read 1 MB sequentially from memory 250,000 ns 0.25 ms Round trip within same datacenter 500,000 ns 0.5 ms Read 1 MB sequentially from SSD* 1,000,000 ns 1 ms 4X memory Disk seek 10,000,000 ns 10 ms 20x datacenter roundtrip Read 1 MB sequentially from disk 20,000,000 ns 20 ms 80x memory, 20X SSD Send packet CA->Netherlands->CA 150,000,000 ns 150 ms
For perspective on the numbers consider L1 access = 1 scond
L1 cache reference 0:00:01 Branch mispredict 0:00:10 L2 cache reference 0:00:14 Mutex lock/unlock 0:00:50 Main memory reference 0:03:20 Compress 1K bytes with Zippy 1:40:00 Send 1K bytes over 1 Gbps network 5:33:20 Read 4K randomly from SSD 3 days, 11:20:00 Read 1 MB sequentially from memory 5 days, 18:53:20 Round trip within same datacenter 11 days, 13:46:40 Read 1 MB sequentially from SSD 23 days, 03:33:20 Disk seek 231 days, 11:33:20 Read 1 MB sequentially from disk 462 days, 23:06:40 Send packet CA->Netherlands->CA 3472 days, 05:20:00