是这样的,我自己写了个板子,想测试一下速度,代码:
clock_t start, finish;
start = clock();
for(long int i = 0; i < 1000000; i++){
ans = ...;
}
finish = clock();
printf("%.4f\n", (double) (finish - start) / CLOCKS_PER_SEC);
上面的代码仅输出有效运行时间
在我不开 -O2 时为3.7180
然后我开了 -O2 优化,神奇的事情就来了:0.0000
我以为是开了 -O2 之后就会出玄学错误,于是我在下面加了行输出(printf("%d", ans)
),然后时间:8.8060
我又把 -O2 关掉试了一遍:9.1190
总结一下:
time (s) | 无输出 | 有输出 |
---|
无 -O2 | 3.7180 | 9.1190 |
有 -O2 | 0.0000 | 8.8060 |
这些都是我在本地测试的,使用的编译器为 TDM-GCC 9.2.0 64-bit Debug
所以有输出和无输出的差别咋就这么大呢?
因为这个是编译器的问题,我就不放代码了