一旦我意识到在 GCC 中有这个选项,我就问谷歌,很多人想知道如何告诉编译器不要优化代码。这似乎适得其反,这对程序员有什么帮助?也许调试?在首选这样做的情况下,它将如何提供帮助?
问问题
111 次
2 回答
2
你说的 - 调试。优化器可以重组代码,使函数不再存在并且语句混合在一起。通常需要关闭优化以允许调试器将机器/字节代码地址映射回源位置。
正如 Tikhon 所提到的,如果优化器有错误,它也很有用。
于 2013-01-26T06:27:08.590 回答
1
主要原因是编译时间:打开优化可以显着增加构建时间,但不一定会带来太多好处。
此外,某些优化可能会影响程序的准确性和正确性。但是,这些优化通常需要显式打开,而不是使用像 -O2 这样的标志。
一些优化——比如内联——可以增加可执行文件的大小。在某些情况下,这是一个重要的考虑因素。
优化也会对您的代码产生负面影响。例如,速度可能会提高,但会以使用更多内存为代价。这并不总是可取的。
于 2013-01-26T06:19:31.700 回答