gpt4 book ai didi

c++ - 启用优化后,C++代码 “supposed”的运行速度有多快?

转载 作者:行者123 更新时间:2023-12-01 14:43:12 26 4
gpt4 key购买 nike

我使用g++进行编译时没有任何选项,该程序可在1分钟左右运行。
但是,使用-O3进行编译会使它在大约1-2秒内运行。

我的问题是加快速度是否正常?还是我的代码可能太糟糕了,以至于优化可能会占用很多时间。显然,我知道我的代码并不完美,但是由于速度如此之快,我开始认为它比我想象的还要糟糕。请告诉我“正常”的加速量是什么(如果是这样的话),以及加速过多是否意味着可以(而且应该)手动(而不是依靠编译器)轻松地优化不良代码。

最佳答案

How much faster is C++ code “supposed” to be with optimizations turned on?


理论上:不一定有任何速度差异。速度差也没有上限。 C++语言根本没有在优化与缺少优化之间指定区别。
实践中:这取决于。一些程序比其他程序可以从优化中获得更多 yield 。有些行为比其他行为更容易证明。某些优化甚至可能使程序变慢,因为编译器无法了解运行时可能发生的所有事情。

... 1 minute ... [optimisation] makes it run in around 1-2 seconds.

My question is whether it is normal to have this much of a speed up?


这是完全正常的。您不能以为自己总是会得到尽可能多的进步,但这并不是与众不同的。

Or is my code perhaps so bad, that optimization can take away that much time.


如果程序经过优化后运行很快,那么它就是一个快速程序。如果程序没有优化就很慢,那么我们不在乎,因为我们可以启用优化。通常,只有优化的速度才有意义。
快总比慢要好,尽管这不是程序的唯一重要指标。可读性,可维护性,尤其是正确性更为重要。

Please tell me ... whether ... code ... could ... be ... optimized by hand instead of relying on the compiler.


至少可以用汇编语言编写程序,从而可以手动优化所有内容。

... or should ...


不需要。没有理由浪费时间进行编译器已经为您完成的工作。

有时有一些原因需要手动优化一些已经被编译器很好地优化的东西。相对加速不是这些原因之一。一个有效原因的例子是,当涉及实时需求(无论是硬的还是软的)时,未经优化的构建可能太慢而无法出于调试目的而执行。

关于c++ - 启用优化后,C++代码 “supposed”的运行速度有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60951870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com