-O2的神奇操作
查看原帖
-O2的神奇操作
315991
HairlessVillager楼主2020/8/8 18:58

是这样的,我自己写了个板子,想测试一下速度,代码:

	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)无输出有输出
无 -O23.71809.1190
有 -O20.00008.8060

这些都是我在本地测试的,使用的编译器为 TDM-GCC 9.2.0 64-bit Debug

所以有输出和无输出的差别咋就这么大呢?

因为这个是编译器的问题,我就不放代码了

2020/8/8 18:58
加载中...