GCC,MSVC,LLVM以及可能的其他工具链支持链接时(整个程序)优化,以允许编译单元之间的调用优化.
在编译生产软件时是否有理由不启用此选项?
解决方法:
我假设“生产软件”是指您发送给客户/投入生产的软件. Why not always use compiler optimization?的答案(Mankarse特别指出)主要适用于您要调试代码的情况(因此软件仍处于开发阶段 – 而非生产阶段).
我能想到的唯一好的,有效的原因是链接时间优化可能会引入微妙的错误,请参阅Link-time optimization for the kernel.假设您有适当的测试来检查您即将发布的软件的正确性,我认为没有理由不这样做默认情况下使用LTO. (随着时间的推移,LTO越来越成熟,所以我们希望这些微妙的错误会越来越少.)