-O1-O: 较低的优化级别,编译器会尝试减少空间大小和优化程序的执行时间,但不执行需要消耗大量编译时间的优化 -O2: 较高的优化级别,牺牲更多编译时间来提高程序的性能 -O3: 最高的优化级别,宁愿牺牲空间来提升程序的执行速度 -Og: 主要使用-O1优化, 除了那些影响调试的部分 -Os: 侧重于优化文件的体积...
这个优化标识和-O3有异曲同工之妙,当然两者的目标不一样,-O3的目标是宁愿增加目标代码的大小,也要拼命的提高运行速度,但是这个选项是在-O2的基础之上,尽量的降低目标代码的大小,这对于存储容量很小的设备来说非常重要。 为了降低目标代码大小,会禁用下列优化选项,一般就是压缩内存中的对齐空白(alignment padding) ...
-funit-at-a-time 2. -O2 该优化选项会牺牲部分编译速度,除了执行-O1所执行的所有优化之外,还会采用几乎所有的目标配置支持的优化算法,用以提高目标代码的运行速度。 -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-...
是比O1 更高级的选项,进行更多的优化。Gcc 将执行几乎所有的不包含时间和空间折中的优化。当设置 O2 选项时,编译器并不进行循环打开()loop unrolling 以及函数内联。与 O1 比较而言,O2 优化增加了编译时间的基础上,提高了生成代码的执行效率。 O2 打开所有的 O1 选项,并打开以下选项: l -fforce-mem:在做算术...
O0 -->> O1 -->> O2 -->> O3 -O0表示没有优化,-O1为缺省值,-O3优化级别最高 英文解析: `-O ' `-O1 ' Optimize. Optimizing compilation takes somewhat more time, and a lot more memory for a large function. With `-O ', the compiler tries to reduce code size and execution ...
优化等级 -O1 -O2 -O3 -Os -Ofast -Og 一下内容摘自 Using the GNU Compiler Collection (GCC) 一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的 p命令查看变量的值,改变变量的值等。并且把获取最快的编译速度作为它的目标。
-O2优化提供了比-O1更全面的性能提升。除了包含-O1的所有优化,还额外进行了如下优化: 高级循环优化:包括循环展开和循环融合等。 内联函数:将小函数的代码直接插入调用处。 分支预测:根据可能的执行路径优化代码。 -O2是平衡编译时间和运行效率的常用选择,适用于绝大多数情况。 3.-O3优化等级 -O3优化是GCC中最高...
GCC是一款开源的编译器,它提供了一系列的优化选项来提升代码的执行效率。其中,-O1,-O2和-O3是GCC中常用的优化选项。-O1选项会应用一些基本的优化技术,-O2会进行更多的优化,而-O3则会根据程序的复杂性和可行性应用更高级的优化技术。 2. GCC中的优化选项-O1,-O2,-O3是如何工作的?
3 -O2 执行-O1所有优化选项,同时额外执行几乎全部不需要在空间和性能之间平衡的优化选项。 比如: -fgcse:优化全局公共表达式、常量的传递 -fcode-hoisting:将所有分支都需要执行的表达式尽早执行(对于优化代码大小很有用,同时也提升性能) -finline-functions:考虑将所有函数变成内联函数(即使没有被声明为inline) 4 ...
-O1:启用基本优化选项 -O2:启用更多优化选项 -O3:启用最高级别的优化选项 -Os:优化代码大小 -Ofast:启用快速优化选项 -Og:启用调试优化选项 例如,如果要关闭 -O2 优化标志,可以使用以下命令: 代码语言:txt 复制 gcc -fno-builtin -o output source.c 这将关闭 -O2 优化标志,并将源代码编译为可执行文件 ou...