- UID
- 1029342
- 性别
- 男
|
四、优化选项GCC具有优化代码的功能,主要的优化选项包括如下:
- -O0:不进行优化处理。
- -O或-O1:进行基本的优化,这些优化在大多数情况下都会使程序执行得更快。
- -O2:除了完成-O1级别的优化外,还要一些额外的调整工作,如处理器指令调度等,这是GNU发布软件的默认优化级别。√
- -O3:除了完成-O2级别的优化外,还进行循环的展开以及其他一些与处理器特性相关的优化工作。
- -Os:生成最小的可执行文件,主要用于在嵌入式领域。
一般来说,优化级别越高,生成可执行文件的运行速度也越快,但消耗在编译上的时间就越长,因此在开发的时候最好不要使用优化选项,到软件发行或开发结束的时候才考虑对最终生成的代码进行优化。
- -finline-functions:允许编译器将一些简单的函数在其调用处展开。
- -funswitch-loops:将循环体中值不改变的变量移到循环体外。
实例:给出一段代码,使用gcc进行编译,同时比较优化前后执行程序所花的时间(test3.c)
#include<stdio.h>int main(){ int i, j, x; x = 0; for(i = 0; i < 100000; i++) { for(j = i; j > 0; j--) { x += j; } } return 0;}
运行后的结果如下:
可以看到,优化的效果十分的显著 |
|