Que signifie « code cache-friendly » et comment cela affecte-t-il les performances du C++ ?
Bonjour ! J'apprends le C++ et je suis tombé sur le terme « cache-friendly ». Je vois souvent dans les discussions sur les performances que le code doit être cache-friendly, mais je ne comprends pas complètement ce que cela signifie en pratique.
J'ai un exemple simple. Je travaille avec des matrices 1000×1000 (int). Voici deux variantes de code pour les additionner :
Variante 1 : par lignes
```cpp
int sum = 0;
for (int i = 0; i < 1000; ++i)
for (int j = 0; j < 1000; ++j)
sum += matrix[i][j];
```
Variante 2 : par colonnes
```cpp
int sum = 0;
for (int j = 0; j < 1000; ++j)
for (int i = 0; i < 1000; ++i)
sum += matrix[i][j];
```
La première variante est 5 à 10 fois plus rapide sur mon ordinateur ! J'ai lu que cela est lié à la mise en cache, mais pourquoi une si grande différence ? Comment déterminer si un code est cache-friendly ? Et comment écrire un tel code de manière réfléchie, et non en mémorisant simplement des patterns ?
Je serais reconnaissant pour une explication détaillée avec des exemples.
<<>>
Qu'est-ce que le cache et pourquoi est-il important ?
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
API GraphQL en C++ : guide complet avec exemples