📜  循环的性能(一个缓存问题)

📅  最后修改于: 2021-04-26 18:22:58             🧑  作者: Mango

考虑以下两个C语言函数来计算2D数组中元素的总和。忽略编译器的优化,哪两个是sum的更好实现?

// Function 1
int fun1(int arr[R][C])
{
    int sum = 0;
    for (int i=0; i

在C / C++中,元素按行优先顺序存储。因此,第一种实现具有更好的空间局部性(在连续的迭代中引用附近的存储位置)。因此,对于迭代多维数组,应始终首选第一个实现。