2

一旦我意识到在 GCC 中有这个选项,我就问谷歌,很多人想知道如何告诉编译器不要优化代码。这似乎适得其反,这对程序员有什么帮助?也许调试?在首选这样做的情况下,它将如何提供帮助?

4

2 回答 2

2

你说的 - 调试。优化器可以重组代码,使函数不再存在并且语句混合在一起。通常需要关闭优化以允许调试器将机器/字节代码地址映射回源位置。

正如 Tikhon 所提到的,如果优化器有错误,它也很有用。

于 2013-01-26T06:27:08.590 回答
1

主要原因是编译时间:打开优化可以显着增加构建时间,但不一定会带来太多好处。

此外,某些优化可能会影响程序的准确性和正确性。但是,这些优化通常需要显式打开,而不是使用像 -O2 这样的标志。

一些优化——比如内联——可以增加可执行文件的大小。在某些情况下,这是一个重要的考虑因素。

优化也会对您的代码产生负面影响。例如,速度可能会提高,但会以使用更多内存为代价。这并不总是可取的。

于 2013-01-26T06:19:31.700 回答