C++程式语言 第四版,第225页内容: 只要结果与简单的执行顺序相同,编译器就可以重新排序代码以提高性能。一些编译器,例如在发布模式下的 Visual C + + ,会重新排序这些代码:
#include <time.h>
...
auto t0 = clock();
auto r = veryLongComputation();
auto t1 = clock();
std::cout << r << " time: " << t1-t0 << endl;
变成这种形式:
auto t0 = clock();
auto t1 = clock();
auto r = veryLongComputation();
std::cout << r << " time: " << t1-t0 << endl;
它保证了不同于原始代码的结果(零与大于报告的零时间)。有关详细示例,请参阅 我的另一个问题。这种行为是否符合 C + + 标准?