-O1-O: 较低的优化级别,编译器会尝试减少空间大小和优化程序的执行时间,但不执行需要消耗大量编译时间的优化 -O2: 较高的优化级别,牺牲更多编译时间来提高程序的性能 -O3: 最高的优化级别,宁愿牺牲空间来提升程序的执行速度 -Og: 主要使用-O1优化, 除了那些影响调试的部分 -Os: 侧重于优化文件的体积...
当优化标识被启用之后,gcc编译器将会试图改变程序的结构(当然会在保证变换之后的程序与源程序语义等价的前提之下),以满足某些目标,如:代码大小最小或运行速度更快(只不过通常来说,这两个目标是矛盾的,二者不可兼得)。 在不同的gcc配置和目标平台下,同一个标识所采用的优化种类也是不一样的,这可以使用-Q --help...
优化等级 -O1 -O2 -O3 -Os -Ofast -Og 一下内容摘自 Using the GNU Compiler Collection (GCC) 一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的 p命令查看变量的值,改变变量的值等。并且把获取最快的编译速度作为它的目标。
1 -O0/-Og -O0是默认选项,不执行任何优化。在编译调试版本的时候,一般使用-O0,可以确保调试执行过程完全和代码一致(如果使用优化选项,根据源文件设定的断点和经过优化编译得到的程序可能对不上,所以不能准确停在预期的地方)。 -Og是针对调试的优化选项,它会启用-O1的优化指令,除了那么可能会干扰调试的优化选项...
优化等级 -O1 -O2 -O3 -Os -Ofast -Og 一下内容摘自 Using the GNU Compiler Collection (GCC) 一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的 p命令查看变量的值,改变变量的值等。并且把获取最快的编译速度作为它的目标。
在gcc中有一个-O选项,后面会跟一个字符,例如-O2,-Os,-O0,-Og等代表不同的优化等级。不同的优化等级有不同的侧重点。对于-O0,-O1,-O2,-O3这四种优化大家可以这样认为,在大部分情况下,数字越大优化等级越高,程序运行效率越高,但是编译出来的文件大小也会越大,可以理解为用空间换时间。
Og: 优化性能同时不损害可调试性。包含O1选项中不损害可调试性的优化项 Ofast: 忽视严格的标准编译性。包含O3中所有选项及` -ffast-math` O1优化项 代码语言:txt 复制 -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim ...
-O, -O1 在不影响编译速度的情况下,尽量采取一些优化算法降低代码大小和加快代码运行的速度,并启用以下优化选项: fauto-inc-dec 地址访问时,合并地址访问指令和地址的递增和递减操作 fbranch-count-reg 在计数寄存器中运行递减和分支指令 而不是单独运行递减指令,并与零比较,然后再根据结果进行分支 ...
在GCC 中关闭特定的优化标志,可以使用 -fno- 选项。例如,如果要关闭 -O2 优化标志,可以使用 -fno-builtin 选项。 以下是一些常用的 GCC 优化标志: -O0:关闭所有优化选项 -O1:启用基本优化选项 -O2:启用更多优化选项 -O3:启用最高级别的优化选项 -Os:优化代码大小 -Ofast:启用快速优化选项 -Og:启用调试优化...
在Linux中,您可以使用GCC(GNU编译器集合)命令来对C和C++代码进行优化 选择优化级别:GCC提供了不同的优化级别,从-O0(无优化)到-O3(最高优化级别)。每个级别都会启用一组特定的优化选项。例如,-O1启用基本优化,而-O2还包括更多的优化。根据您的需求选择合适的优化级别。 使用优化选项:要对C或C++代码进行优化,请...