我有一个使用g ++进行编译且没有任何选项的程序,运行时间约为1分钟。但是,使用-O3进行编译会使它在大约1-2秒内运行。
我的问题是,有这么快的速度是否正常?还是我的代码可能太糟糕了,以至于优化可能会占用很多时间。显然,我知道我的代码并不完美,但是由于速度如此之快,我开始认为它比我想象的还要糟糕。请告诉我“正常”的加速量是什么(如果是这样的话),并且加速过多是否意味着可以(而且应该)手动(而不是依靠编译器)轻松地优化不良代码。
启用优化功能后,C ++代码“应该”以多快的速度运行?
理论上:不一定有任何速度差异。速度差也没有上限。 C ++语言只是没有在优化与缺少优化之间指定区别。
实际上:这取决于。一些程序比其他程序可以从优化中获得更多收益。有些行为比其他行为更容易证明。一些优化甚至可能使程序变慢,因为编译器无法了解运行时可能发生的一切。
... 1分钟... [优化]使它在大约1-2秒内运行。
我的问题是,有这么快的速度是否正常?
这完全正常。您不能以为自己总是会得到尽可能多的进步,但这并非与众不同。