Недавно я наткнулся на этот пример, когда читал введение в текст C. Не было никакого объяснения тому, почему приведенные ниже коды отличаются друг от друга, когда речь идет об удобстве кеша, и я не могу понять разницу. Текст звучит так:
Сравнивая эти два кода:
// cache-friendly
int i, j;
for (i = 0; i < 10; ++i)
{
for (j = 0; j < 20; ++j)
{
a[i][j] += 10;
}
}
VS
// not cache-friendly
int i, j;
for (j = 0; j < 20; ++j)
{
for (i = 0; i < 10; ++i)
{
a[i][j] += 10;
}
}
Кто-нибудь понимает, почему код A более удобен для кэширования по сравнению с кодом B?