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;
}
```