-O2是平衡编译时间和运行效率的常用选择,适用于绝大多数情况。 3.-O3优化等级 -O3优化是GCC中最高级别的标准优化。除了包括-O2级别的所有优化外,-O3引入了更多高级优化技术,如: 向量化:利用SIMD指令并行处理数据。 高级内联:更激进的函数内联策略。 代码重新排列:优化代码布局以提升缓存利用率。 -O3优化着重于最...
-O2(氧气优化) 是比O1 更高级的选项,进行更多的优化。Gcc 将执行几乎所有的不包含时间和空间折中的优化。当设置 O2 选项时,编译器并不进行循环打开()loop unrolling 以及函数内联。与 O1 比较而言,O2 优化增加了编译时间的基础上,提高了生成代码的执行效率。 O2 打开所有的 O1 选项,并打开以下选项: l -fforc...
-O1-O: 较低的优化级别,编译器会尝试减少空间大小和优化程序的执行时间,但不执行需要消耗大量编译时间的优化 -O2: 较高的优化级别,牺牲更多编译时间来提高程序的性能 -O3: 最高的优化级别,宁愿牺牲空间来提升程序的执行速度 -Og: 主要使用-O1优化, 除了那些影响调试的部分 -Os: 侧重于优化文件的体积...
使用-O2 优化选项可以提高程序的性能,但可能会增加编译时间和生成的可执行文件的大小。在某些情况下,-O2 可能会导致一些问题,例如过度优化导致的错误。在这种情况下,可以使用 -O1(一级优化)或 -O(默认优化)进行更保守的优化。 注意:在编译 GCC 时,-O2 选项的默认值已改变。在 GCC 9 及更高版本中,-O2 现在...
-O2 进一步优化。GCC 将执行几乎所有的不包含时间和空间折中的优化。当设置 O2 选项时,编译器并不进行循环打开 loop unrolling 以及函数内联。与 O1 比较而言,O2 优化增加了编译时间的基础上,提高了生成代码的执行效率。 O2打开所有的O1选项,并打开以下选项: ...
gcc/g++ -Q -O2 --help=optimizers gcc/g++ -Q -O3 --help=optimizers 差异如下(左边O3,右边O2):可以看到除了上面官网说的几个选项外,O3还比O2多了下面几个优化:-ftree-loop-distribute-patterns -ftree-loop-vectorize-finline-functions-ftree-slp-vectorize 其中从字面上看跟循环相关的有如下几个:...
(2)-O2,包括-O的功能,以及指令调整等调整工作 (3)-O3,包括-O2的功能,以及循环展开等工作 八、优化的实例 //optimize.c #include<stdio.h> int main() { double counter; double result; double temp; for(counter = 0; counter < 4000.0*4000.0*4000.0/20.0 + 2030; counter += (5 -3 + 2 + 1...