Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Latency Numbers Every Programmer Should Know - MarkDown Fork

Latency Comparison Numbers

Note: "Forked" from Latency Numbers Every Programmer Should Know

Event Nanoseconds Microseconds Milliseconds Comparison
L1 cache reference 0.5 - - -
Branch mispredict 5.0 - - -
L2 cache reference 7.0 - - 14x L1 cache
Mutex lock/unlock 25.0 - - -
Main memory reference 100.0 - - 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000.0 3 - -
Send 1K bytes over 1 Gbps network 10,000.0 10 - -
Read 4K randomly from SSD 150,000.0 150 - ~1GB/sec SSD
Read 1 MB sequentially from memory 250,000.0 250 - -
Round trip within same datacenter 500,000.0 500 - -
Read 1 MB sequentially from SSD 1,000,000.0 1,000 1 ~1GB/sec SSD, 4X memory
Disk seek 10,000,000.0 10,000 10 20x datacenter roundtrip
Read 1 MB sequentially from disk 20,000,000.0 20,000 20 80x memory, 20X SSD
Send packet CA → Netherlands → CA 150,000,000.0 150,000 150 -

Unit Reference

  • 1 ns = 10^-9 seconds
  • 1 µs = 10^-6 seconds = 1,000 ns
  • 1 ms = 10^-3 seconds = 1,000 µs = 1,000,000 ns

Credit/Notes

Visual Comparison Charts

Visual Comparison Chart

Scale of Computing Latencies

@jgoldschrafe

This comment has been minimized.

Copy link

jgoldschrafe commented Mar 13, 2017

The numbers for main memory reference don't add up. They are 100x L1, but only 14.28x the L2 numbers given, not the 20x stated.

@AnatoliiStepaniuk

This comment has been minimized.

Copy link

AnatoliiStepaniuk commented Aug 6, 2017

How long will it take to read 1kb from SSD? (Definitely not 1/1024 of time you need to read 1Mb, right?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.