15 June 2023

C++ 核心指南目录

“Access memory predictably”

理由

缓存效率对性能至关重要。缓存算法能较好优化简单的线性内存访问。

例子

int matrix[rows][cols];

// bad
for (int c = 0; c < cols; ++c)
    for (int r = 0; r < rows; ++r)
        sum += matrix[r][c];

// good
for (int r = 0; r < rows; ++r)
    for (int c = 0; c < cols; ++c)
        sum += matrix[r][c];

二维数组在内存中以行为单位,平铺展开。所以以行为单位进行访问,可以利用缓存算法,优化性能。