打开了大部分O2优化中不会增加程序大小的优化选项,并对程序代码的大小做更深层的优化。(通常我们不需要这种优化)Os会关闭如下选项:-falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -fprefetch-loop-arrays 优化介绍小结O0选项不进行任何优化,在这种情况下,编译器尽量的缩短编译消耗...
◼ -O2: 包含-O1 的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化。 GCC 执行几乎所有支持的操作但不包括空间和速度之间权衡的优化,编译器不执行循环 展开以及函数内联。这是推荐的优化等级,除非你有特殊的需求。-O2 会比-O1 启用多 一些标记。与-O1 比较该优化-O2 将会花费更多的编译时间当...
O1 优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。 O2 会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 O3 在 O2 的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。 Os 主要是对代码大小的优化,我们基本不用...
打开了大部分O2优化中不会增加程序大小的优化选项,并对程序代码的大小做更深层的优化。(通常我们不需要这种优化)Os会关闭如下选项: -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -fprefetch-loop-arrays 优化介绍小结 O0选项不进行任何优化,在这种情况下,编译器尽量的...
O2打开所有的O1选项,并打开以下选项: l -fforce-mem:在做算术操作前,强制将内存数据copy到寄存器中以后再执行。这会使所有的内存引用潜在的共同表达式,进而产出更高效的代码,当没有共同的子表达式时,指令合并将排出个别的寄存器载入。这种优化对于只涉及单一指令的变量, 这样也许不会有很大的优化效果. 但是对于再很...
—O0: 默认情形,不进行优化 (大写字母O后接数字0) -O1-O: 较低的优化级别,编译器会尝试减少空间大小和优化程序的执行时间,但不执行需要消耗大量编译时间的优化 -O2: 较高的优化级别,牺牲更多编译时间来提高程序的性能 -O3: 最高的优化级别,宁愿牺牲空间来提升程序的执行速度 ...
-O0 、-O1 、-O2 、-O3 编译器的优化选项的 4 个级别,-O0 表示没有优化, -O1 为默认值,-O3 优化级别最高。 -g 只是编译器,在编译的时候,产生调试信息。 -gstabs 此选项以 stabs 格式声称调试信息, 但是不包括 gdb 调试信息。 -gstabs+
GCC-O优化的影响 优化(Optimization)是指通过改进代码的执行效率和性能,以实现更高效的程序运行。O优化(O Optimization)是指编译器对代码进行优化的一种级别,其中包括了多个不同的优化技术和策略。在编译器中,通常有多个优化级别可供选择,比如O0、O1、O2、O3等。这些优化级别表示编译器在生成可执行文件时所应用的...
-O0——默认不优化(若要生成调试信息,最好不优化)。 -O1——简单优化,不进行速度与空间的权衡优化。 -O2——在O1简单优化的基础进一步优化,包括了执行代码的调度优化。若要优化,该选项最适合,它是GNU发布软件的默认优化级别。 -Os——生成最小执行文件。