В общем, вы можете эмулировать каждый из них с другим, так что нет никакого неотъемлемого преимущества для одного над другим. Тем не менее, реализации кэша обычно рассматривают локальность ссылки как положительный фактор для оценки того, скоро ли будет доступно доступ к памяти. Это может иметь последствия для производительности. Например, в строке-мажорных реализации, этот фрагмент кода:
int sum = 0;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
sum += a[i][j];
, вероятно, будет быстрее, чем:
int sum = 0;
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
sum += a[j][i];
Вы должны попытаться разработать свои алгоритмы, так что вы закодировать внешние петли над рядами в среде с большим числом строк и над столбцами в основной среде столбца, чтобы минимизировать промахи в кэше.
Спасибо за ответ. Интересно, не существует ли неотъемлемого преимущества одного над другим, то почему разные языки следуют различным стилям? – Jay 2010-12-08 06:09:23