这个优化标识和-O3有异曲同工之妙,当然两者的目标不一样,-O3的目标是宁愿增加目标代码的大小,也要拼命的提高运行速度,但是这个选项是在-O2的基础之上,尽量的降低目标代码的大小,这对于存储容量很小的设备来说非常重要。 为了降低目标代码大小,会禁用下列优化选项,一般就是压缩内存中的对齐空白(alignment padding) ...
是比O1 更高级的选项,进行更多的优化。Gcc 将执行几乎所有的不包含时间和空间折中的优化。当设置 O2 选项时,编译器并不进行循环打开()loop unrolling 以及函数内联。与 O1 比较而言,O2 优化增加了编译时间的基础上,提高了生成代码的执行效率。 O2 打开所有的 O1 选项,并打开以下选项: l -fforce-mem:在做算术...
代码重新排列:优化代码布局以提升缓存利用率。 -O3优化着重于最大化程序性能,但可能导致编译时间显著增加。 选择合适的优化等级取决于具体的应用场景和性能需求。-O1提供了基础的优化,适用于快速编译和调试;-O2是一个平衡点,适用于大多数生产环境;而-O3提供了最高级别的优化,适合对性能有极高要求的场景。开发者应...
-O1-O: 较低的优化级别,编译器会尝试减少空间大小和优化程序的执行时间,但不执行需要消耗大量编译时间的优化 -O2: 较高的优化级别,牺牲更多编译时间来提高程序的性能 -O3: 最高的优化级别,宁愿牺牲空间来提升程序的执行速度 -Og: 主要使用-O1优化, 除了那些影响调试的部分 -Os: 侧重于优化文件的体积...
优化等级 -O1 -O2 -O3 -Os -Ofast -Og 一下内容摘自 Using the GNU Compiler Collection (GCC) 一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的 p命令查看变量的值,改变变量的值等。并且把获取最快的编译速度作为它的目标...
一、-O1优化级别 -O1优化级别是介于不优化(-O0)和中等优化(-O2)之间的级别。它会执行一些基础的优化操作,但不会显著增加编译时间。这些基础操作包括但不限于: 代码删除:移除不会执行的代码,如从未调用的函数。 简单的性能优化:比如循环优化,减少循环次数。
gcc 默认提供了 5 级优化选项: ◼ -O/-O0:无优化(默认) ◼ -O1:使用能减少目标文件大小以及执行时间并且不会使编译时间明显增加的优化。 该模式在编译大型程序的时候会花费更多的时间和内存。在-O1 下:编译会尝试减少代 码体积和代码运行时间,但是并不执行会花费大量时间的优化操作。
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 ...
在GCC 9.2中,可以通过以下方式在没有显式指定-O1的情况下获得GCC -O1优化: 编译器选项: 使用-O2或-O3优化级别,它们会自动启用-O1优化。例如: 代码语言:txt 复制 g++ -std=c++11 -O2 -o output_file input_file.cpp 警告选项: 使用-Wall和-Wextra,可以启用更多的警告选项,从而可以提醒用户代码中的低...