一般情况下,-O2是一个既能提供性能提升又不会过分增加编译时间的黄金点。但对于对执行效率要求极高的应用,选用-O3可能会带来额外的性能提升。然而,更高的优化级别可能会使得生成的代码难以调试,因为优化过程会改变代码的结构。 五、总结 GCC中的优化级别-O1、-O2、和-O3代表了不同程度的优化策略。随着优化级别的...
-O2是平衡编译时间和运行效率的常用选择,适用于绝大多数情况。 3.-O3优化等级 -O3优化是GCC中最高级别的标准优化。除了包括-O2级别的所有优化外,-O3引入了更多高级优化技术,如: 向量化:利用SIMD指令并行处理数据。 高级内联:更激进的函数内联策略。 代码重新排列:优化代码布局以提升缓存利用率。 -O3优化着重于最...
O1 优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。 O2 会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 O3 在 O2 的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。 Os 主要是对代码大小的优化,我们基本不用...
在嵌入式开发中,gcc编译器的优化选项在release模式下对程序性能至关重要。默认的debug模式(-O0)与release模式(-O2)之间的区别在于优化程度。在-O0下,编译器不做任何优化,适合于调试;而-O2开启更深度的优化,虽然编译时间增加,但生成的代码性能更好。-O1优化级别对大型函数进行简化,但避免耗费大量...
这个优化标识和-O3有异曲同工之妙,当然两者的目标不一样,-O3的目标是宁愿增加目标代码的大小,也要拼命的提高运行速度,但是这个选项是在-O2的基础之上,尽量的降低目标代码的大小,这对于存储容量很小的设备来说非常重要。 为了降低目标代码大小,会禁用下列优化选项,一般就是压缩内存中的对齐空白(alignment padding) ...
gcc -O0 -O1 -O2 -O3 -Os 编译优化等级 GCC提供了大量优化等级,用来对编译时间、目标文件大小、执行效率三个维度进行不同的取舍和平衡 -O0,最少的优化。(这是默认的编译选项)(可以最大程度上配合产生代码调试信息,可以在任何代码行打断点,特别是死代码处)...
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后面可以跟-O1 -O2 -O3这三个选项来优化代码,注意,这里是字母O,不是数字0,-O3的优化程度最高。 -O1 是默认值,回减小代码的尺寸和运行时间,但不会增加编译时间 -O2 跟-O1不同的地方是-O2增加了优化:不需要额外的空间去加速交换 -Os 比-O2更进了一步,但忽略了有可能增加代码长度的部分,并且增加了减...
-O3 尝试非常优化代码以提高性能。它包括所有优化 -O2 包括,以及更多。 另一方面,-Os 指示 GCC “优化大小”。它启用所有 不会增加可执行文件大小的-O2 优化,然后它还切换一些优化标志以进一步减小可执行文件大小。 请注意,我的描述故意含糊不清 - 阅读 GCC 文档以更深入地讨论究竟为任一优化级别启用了哪些标志...