首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

GCC编译器使用(2)

GCC编译器使用(2)

四、优化选项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;}
运行后的结果如下:

可以看到,优化的效果十分的显著
继承事业,薪火相传
返回列表