Avatar ·

Warum ist die elementweise Addition in zwei separaten Schleifen viel schneller als in einer einzigen kombinierten Schleife?

Hallo zusammen! Ich schreibe seit mehreren Jahren in C++, bin aber kürzlich auf ein sehr seltsames Performance-Verhalten gestoßen, das ich mir nicht erklären kann.\n\nIch habe zwei Arrays: `a` und `b` mit jeweils 20 Millionen Elementen. Ich möchte zuerst ihre Elemente addieren und das Ergebnis in Array `c` speichern, dann die Elemente von Array `c` mit Array `d` addieren und in Array `e` speichern. Ich habe zwei Code-Varianten geschrieben: die erste mit zwei separaten Schleifen, die zweite mit einer einzigen kombinierten Schleife.\n\nHier ist der Code:\n\n```cpp\n#include \n#include \n#include \n\nconst size_t N = 20000000;\n\nint main() {\n std::vector a(N, 1);\n std::vector b(N, 2);\n std::vector c(N);\n std::vector d(N, 3);\n std::vector e(N);\n\n // Variante 1: zwei separate Schleifen