Here are some numbers that you are probably looking for, as quoted by Jeff Dean, a Google Fellow:
Numbers Everyone Should Know
L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 100 ns (25) Main memory reference 100 ns Compress 1K bytes with Zippy 10,000 ns (3,000) Send 2K bytes over 1 Gbps network 20,000 ns Read 1 MB sequentially from memory 250,000 ns Round trip within same datacenter 500,000 ns Disk seek 10,000,000 ns Read 1 MB sequentially from network 10,000,000 ns Read 1 MB sequentially from disk 30,000,000 ns (20,000,000) Send packet CA->Netherlands->CA 150,000,000 ns
It’s from his presentation titled Designs, Lessons and Advice from Building Large Distributed Systems and you can get it here:
The talk was given at Large-Scale Distributed Systems and Middleware (LADIS) 2009.
Other Info
- Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design
- Stanford 295 Talk Software Engineering Advice from Building Large-Scale Distributed Systems
It’s said that gcc -O4 emails your code to Jeff Dean for a rewrite.