Казалось бы, зачем задумывываться о процессах, происходящих на таком низком уровне, как кэширование данных в L1 и L2 кешах (L1, L2 cache), если Вы программируете под .NET. Очевидно для повышения быстродействия программы (perfomance) за счет уменьшения кэш-промахов (Cache Miss). Самый простой и классический пример демонстрирующий проблему Cache Miss, это "неправильный" обход массива. При "правильном" обходе количество промахов будет минимально, следовательно участок кода выполнится быстрее:
int size = 10000;
int[,] matrix = new int[size, size];
// Вариант 1
// Очень медленный вариант
for (int col = 0; col < size; col++)
for (int row = 0; row < size; row++)
matrix[row, col] = 0;
// Вариант 2
// Быстрый вариант
for (int row = 0; row < size; row++)
for (int col = 0; col < size; col++)
matrix[row, col] = 0;