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