缓存 - RAM访问时间
caching - RAM access times
在数组上考虑两个循环:
int *arr = new int[1024 * 1024];
// Loop1
for (int i = 0; i < n; i++) arr[i] *= 3;
// Loop2
for (int i = 0; i < n; i += 16) arr[i] *= 3;
,由于它们在大符号中都是o(n),但是它们具有相同数量的RAM访问权限。即相同数量的缓存遗漏。
为什么他们会具有相同数量的RAM访问权限?循环2是否会根据每次访问后的RAM访问较少,我被16?
始终使用线路的粒度访问/管理。缓存线中将有多个元素。我认为您的缓存线可以容纳16个或更多的元素,因此,一个RAM访问将加载所有相邻的元素以缓存,并且下一个16个字节不需要进一步的RAM访问。
相关文章:
- Deque 中元素的随机访问如何提供恒定的时间复杂度?
- 我的C++程序如何访问计算机的日期和时间以打印和使用当前年份?
- 如何在对数时间内访问 c++ std::set 中的第 k 个元素?
- 访问和存储/解析性std :: Chrono ::持续时间:: milliseconds(cpprest)时使用什么类型
- 对列表中的任意元素的常量时间访问 (C++)
- 是二维阵列访问/修改时间组
- 持续的时间访问是否在某个时候意味着连续内存
- 缓存 - RAM访问时间
- DFS 访问内部的地图元素.时间复杂度
- 为什么内存访问时间远远超过CPU缓存大小时会增加
- 如何在Qt中将访问时间限制为一种方法
- PDH 无法通过 PdhAddCounter() 访问总 CPU 时间
- 测量 ARM Cortex-A15 的缓存访问时间/周期
- C++地图访问和迭代所花费的时间
- 最适合正确测量缓存访问时间的计时器
- 使用大型数组索引增加访问时间
- 容器具有恒定的时间,用于访问任何元素,从前面弹出并向后推
- 为什么我的std::unordereded_map访问时间不是恒定的
- C++无序映射恒定时间访问
- 如何计算内存访问时间