Ich habe einen C++ Code, der 3 Array-Deklarationen hat.Hängt die g ++ - Kompilierzeit von der Array-Größe ab?
float A[NUM]; float B[NUM]; float C[NUM];
Wenn ich mit NUM=512
kompilieren, Kompilation ist schnell
time g++ -DNUM=512 trials trials.cpp -lm
0.16s user 0.04s system 94% cpu 0.219 total
Allerdings, wenn ich mit NUM=167772160
kompilieren, es mehr Zeit in Anspruch nimmt.
time g++ -DNUM=167772160 trials trials.cpp -lm
7.90s user 0.69s system 99% cpu 8.604 total
Ich habe C nicht verwendet ++ in Jahren. Ich bin gespannt, warum es bei der Kompilierung einen Zeitunterschied gibt, obwohl die Objektdateien nach der Kompilierung gleich groß sind.
Sind diese Arrays statische Daten? –
Sie sind globale Deklarationen. – mutelogan
Wer weiß, welche Optimierungen g ++ versucht zu machen. Vielleicht weist es ein solches Array zu, um zu prüfen, ob es einen ungültigen Speicherzugriff gibt. Versuchen Sie, den Benchmark erneut auszuführen (vielleicht mehrere Male) mit -O0 und führen Sie die Kompilierung und Verknüpfung getrennt durch. – j13r