Gyö*_*sek 8 language-agnostic memory hardware
我们认为内存访问是快速且持续的,但在现代架构/操作系统上,这不一定是真的.
考虑以下C代码:
int i = 34;
int *p = &i;
// do something that may or may not involve i and p
{...}
// 3 days later:
*p = 643;
Run Code Online (Sandbox Code Playgroud)
如果,CPU指令中最后一次分配的估计成本是多少?
i 在L1缓存中,i 在L2缓存中,i 在L3缓存中,i 在RAM中,i 被分页到SSD磁盘,i 被分页到传统磁盘?还有什么地方可以i?
当然这些数字并不是绝对的,但我只对数量级感兴趣.我尝试搜索网络,但谷歌这次没有给我保佑.
Wil*_*ill 14
这里有一些硬数字,证明了精确的时序因CPU系列和版本而异:http://www.agner.org/optimize/
这些数字是一个很好的指南:
L1 1 ns
L2 5 ns
RAM 83 ns
Disk 13700000 ns
Run Code Online (Sandbox Code Playgroud)
并作为一个infograph给你的数量级:
(src http://news.ycombinator.com/item?id=702713)