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