查看如下代码:
1 |
|
通过sudo perf stat -e cache-references,cache-misses ./a.out的检测结果:

将arr[i][j] = 1替换为arr[j][i] = 1后的检测结果:

随着CPU核心速度和数量的不断提升,内存访问成为大多数程序性能的瓶颈(Latency Numbers Every Programmer Should Know),并且这种情况在未来一段时间内仍将持续。硬件设计人员已经开发出越来越复杂的内存处理和加速技术——例如CPU缓存——但如果没有程序员的辅助,这些技术就像上面的代码无法发挥最佳性能。