gcc中使用的-o3优化标志是什么

gcc中使用的-o3优化标志是什么,gcc,Gcc,有人能告诉我一个简单的问题,为什么我们需要在gcc中把-o3与-o关联起来来编译c程序,这将有助于提高编译速度或减少编译过程中的时间开销 谢谢 它可能会提高生成代码的性能 原则上,编译通常需要更长的时间,因为这需要编译器进行更多的分析 对于典型的现代C++代码,-O2和更高的效果可以是非常戏剧化的(数量级,这取决于程序的性质)。 手册页面中详细记录了在不同优化级别执行的优化: 但是请记住,各种优化可能会使潜在的bug显现出来,因为编译器可以利用这些漏洞来实现更高效的目标代码 未定义的行为潜伏在语

有人能告诉我一个简单的问题,为什么我们需要在gcc中把-o3与-o关联起来来编译c程序,这将有助于提高编译速度或减少编译过程中的时间开销


谢谢

它可能会提高生成代码的性能

原则上,编译通常需要更长的时间,因为这需要编译器进行更多的分析

对于典型的现代C++代码,-O2和更高的效果可以是非常戏剧化的(数量级,这取决于程序的性质)。 手册页面中详细记录了在不同优化级别执行的优化:

但是请记住,各种优化可能会使潜在的bug显现出来,因为编译器可以利用这些漏洞来实现更高效的目标代码

未定义的行为潜伏在语言标准没有明确规定需要发生什么的地方。这些可能非常微妙

因此,我建议使用高于-O2的任何东西,除非你有严格的质量控制措施来防止这种隐藏的未定义行为(想想valgrind/purify、静态分析工具和(压力)测试)



这里有一个关于优化编译器中未定义行为的非常深刻的博客:。特别是让我们从编译器编写器的角度来看,编译器编写器的唯一目标是生成尽可能快的代码,并且仍然满足规范要求

标志是
-O3
不是
-O3
,后者会将输出写入名为
3
的文件中,这不是您想要的