为什么某些编译器(例如 gcc)要求您激活优化?为什么不默认运行它们?

问题描述 投票:0回答:1

标题基本上,为什么不默认运行所有可能的优化?

gcc compiler-optimization
1个回答
2
投票

当您处于写入-编译-测试周期时,启用优化不太方便:它会使编译时间更长,并且使生成的代码在调试器中工作得不太好(因为生成的代码的结构可能与您的代码非常不同)写道)。 因此,当尝试快速实施和测试更改时,许多人更喜欢关闭优化,然后再打开以进行最终测试和将要发布的构建。

(当然,这也有缺点。编译器只能在优化时发出一些警告,例如未初始化的变量。而且在很多情况下,有错误的代码仅在优化时才会出现错误行为。所以有一些好处尽管如此,如果您试图追踪关闭优化后可重现的错误,那么这样调试肯定会更容易。)

这意味着,如果计算编译器运行的总次数,绝大多数将在用户不喜欢优化的地方运行。 因此,将“无优化”设置为默认值是有一定意义的。

当然,现在人们已经习惯了这种行为,所以即使有相反的默认值更好,改变它也会引起混乱。

© www.soinside.com 2019 - 2024. All rights reserved.