language-agnostic - 内存访问的成本是多少?

标签 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;

如果在 CPU 指令中最后一次分配的估计成本是多少

  • i在一级缓存中,
  • i在二级缓存中,
  • i在三级缓存中,
  • i 在 RAM 中,
  • i 被调出到 SSD 磁盘,
  • i 被调出到传统磁盘?

i还能在哪里?

当然数字不是绝对的,但我只对数量级感兴趣。我试着在网上搜索,但这次谷歌并没有祝福我。

最佳答案

这里有一些确切的数字,表明确切的时序因 CPU 系列和版本而异:http://www.agner.org/optimize/

这些数字是一个很好的指南:

L1           1 ns
L2           5 ns
RAM         83 ns
Disk  13700000 ns

作为一个信息图来给你数量级:

Click for the big view (src http://news.ycombinator.com/item?id=702713)

关于language-agnostic - 内存访问的成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3038999/

相关文章:

c# - 音频从输入到扬声器的硬件直通 - 不是在软件中完成

language-agnostic - 数据和代码有什么区别?

math - 如何生成沿椭圆周长均匀分布的一组点?

algorithm - 在常量空间和线性时间中向后打印单链表

windows - Windows 应用程序应使用哪些组合键以避免冲突?

c - 如何从进程内存镜像创建 ELF 可执行文件

ios - 获取对象的内存

linux - 端口映射 I/O 地址空间的位置

ios - iPhone 耳机音频插孔重新路由

c++ - cpp中字符串列表的 vector , "EXC_BAD_ACCESS"