Avatar ·

Was bedeutet "cache-friendly"-Code und wie schreibt man effiziente Programme in C++?

Hallo zusammen! Ich bin ein C++-Anfänger und schreibe kleine Programme zur Datenverarbeitung. Kürzlich bin ich auf den Begriff "cache-friendly" gestoßen und habe festgestellt, dass meine Programme wahrscheinlich langsamer laufen, als sie könnten. Ich habe ein einfaches Beispiel: Ich verarbeite ein zweidimensionales Array 10000x10000. Der erste Weg ist die zeilenweise Durchlauf (äußere Schleife über i, innere über j). Der zweite ist die spaltenweise Durchlauf (äußere über j, innere über i). Auf meinem Laptop dauert die erste Variante 0,3 Sekunden, die zweite dagegen 2,5 Sekunden! Der Unterschied ist fast das 8-fache, obwohl der Code dasselbe tut. Hier ist der Code zur Veranschaulichung: ```cpp const int N = 10000; int arr[N][N]; // Variante 1: zeilenweise (schnell) for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { arr[i][j] = i * j; } } // In