Avatar ·

Que signifie le code "cache-friendly" et comment écrire des programmes efficaces en C++ ?

Bonjour à tous ! Je suis un développeur C++ débutant, j'écris de petits programmes pour le traitement de données. Récemment, je suis tombé sur le terme "cache-friendly" (amical pour le cache) et j'ai réalisé que mes programmes fonctionnent probablement plus lentement qu'ils ne le pourraient. J'ai un exemple simple : je traite un tableau bidimensionnel 10000x10000. La première méthode — parcourir par lignes (boucle externe sur i, interne sur j). La seconde — parcourir par colonnes (boucle externe sur j, interne sur i). Sur mon ordinateur portable, la première option s'exécute en 0,3 seconde, tandis que la seconde prend 2,5 secondes ! La différence est presque de 8 fois, bien que le code fasse la même chose. Voici le code pour illustration : ```cpp const int N = 10000; int arr[N][N]; // Variante 1 : par lignes (rapide) for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { arr[i][j] = i * j; } } // Variante 2 : par colonnes (lent) for (int j = 0; j < N; j++) { for (int i = 0; i < N; i++) { arr[i][j] = i * j; } } ``` Pourquoi une si énorme différence ? Qu'est-ce qui rend exactement le code c