Ist es zulässig, dass ein C ++ - Optimierer Aufrufe von clock () neu anordnet?

Die C ++ - Programmiersprache 4. Ausgabe, Seite 225 lautet: Ein Compiler kann Code neu anordnen, um die Leistung zu verbessern, solange das Ergebnis mit dem der einfachen Ausführungsreihenfolge identisch ist.. Einige Compiler, z. Visual C ++ ordnet diesen Code im Release-Modus neu an:

#include <time.h>
...
auto t0 = clock();
auto r  = veryLongComputation();
auto t1 = clock();

std::cout << r << "  time: " << t1-t0 << endl;

in dieses Formular:

auto t0 = clock();
auto t1 = clock();
auto r  = veryLongComputation();

std::cout << r << "  time: " << t1-t0 << endl;

, das ein anderes Ergebnis als der ursprüngliche Code garantiert (null vs. mehr als null gemeldete Zeit). Sehen meine andere Frage für detailliertes Beispiel. Entspricht dieses Verhalten dem C ++ - Standard?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage