Avatar ·

Warum wird mein C++-Code bei einer Array-Größe von 8192 extrem langsam?

Hallo zusammen. Ich schreibe ein C++-Programm zur Bildverarbeitung. Ich habe ein seltsames Problem entdeckt: Wenn die Größe meines Arrays (oder die Schrittweite der Schleife) genau 8192 Elemente beträgt, wird das Programm 10-mal langsamer. Bei einer Größe von 8191 oder 8193 läuft alles flüssig. Hier ist ein vereinfachter Code, der das Problem reproduziert: ```cpp #include #include #include int main() { const int SIZE = 8192; // Wenn auf 8191 oder 8193 geändert, ist die Geschwindigkeit normal std::vector> matrix(SIZE, std::vector(SIZE, 1)); auto start = std::chrono::high_resolution_clock::now(); long long sum = 0; for (int i = 0; i < SIZE; ++i) { for (int j = 0; j < SIZE; ++j) { sum += matrix[i][j]; } } auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration elapsed = end - start; std::cout << "Zeit: " << elapsed.count() << " s, Summe: " << sum << std::endl; return 0; } ```