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?