We like to think that a memory access is fast and constant, but on modern architectures/OSes, that’s not necessarily true.
Consider the following C code:
int i = 34;
int *p = &i;
// do something that may or may not involve i and p
{...}
// 3 days later:
*p = 643;
What is the estimated cost of this last assignment in CPU instructions, if
iis in L1 cache,iis in L2 cache,iis in L3 cache,iis in RAM proper,iis paged out to an SSD disk,iis paged out to a traditional disk?
Where else can i be?
Of course the numbers are not absolute, but I’m only interested in orders of magnitude. I tried searching the webs, but Google did not bless me this time.
Here’s some hard numbers, demonstrating that exact timings vary from CPU family and version to version: http://www.agner.org/optimize/
These numbers are a good guide:
And as an infograph to give you the orders of magnitude: