为什么您不希望编译器优化您的代码?

时间:2013-01-26 06:15:54

标签: compiler-optimization

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

主要原因是编译时间:启用优化可以显着增加构建时间,而不一定带来很多好处。

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

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

优化也会对您的代码产生负面影响。例如,速度可能会增加,但代价是使用更多内存。这并不总是令人满意的。