【ARM 嵌入式 编译系列 2.7 -- GCC 编译优化参数详细介绍】


请阅读【嵌入式开发学习必备专栏 】



在这里插入图片描述

GCC 编译优化概述

GCC(GNU Compiler Collection)包含了用于C、C++、Objective-C、Fortran、Ada和Go等语言的编译器。在编译过程中,GCC提供了多种优化选项,用于提高生成代码的性能,减少可执行文件的大小,或者在这两者之间寻求平衡。优化的方法不一而足,总体上将有以下几类:

  • 精简操作指令;
  • 尽量满足cpu的流水操作;
  • 通过对程序行为地猜测,重新调整代码的执行顺序;
  • 充分使用寄存器;
  • 对简单的调用进行展开等等。

GCC 提供了从O0-O3以及Os这几种不同的优化级别供大家选择,在这些选项中,包含了大部分有效的编译优化选项,并且可以在这个基础上,对某些选项进行屏蔽或添加,从而大大降低了使用的难度。以下是GCC编译优化的详细介绍:

常用优化等级

  • -O0: 不做任何优化,这是默认的编译选项。

    • 不进行优化。
    • 编译速度最快。
    • 通常用于调试,因为它保留了所有的调试信息并且每一行代码都可以直接对应到生成的机器代码。
  • -O1

    • 启用基本优化。
    • 尝试减少代码大小和执行时间,不会显著增加编译时间。
    • 可用于提高程序性能同时保持较好的编译速度。
  • -O2

    • 进行进一步优化。
    • 包含几乎所有不涉及空间-时间权衡的优化。
    • 通常为发布版本推荐的优化级别。
  • -O3

    • 启用更多的优化,包括-O2中的优化以及其他提高性能的优化。
    • 可能会使得编译出来的程序体积变大。
    • 适用于对性能要求极高的程序。
  • -Os

    • 优化生成的代码大小。
    • 执行适合在代码大小和执行时间之间进行权衡的所有优化。
  • -Ofast

    • 最大程度优化性能。
    • 启用所有-O3的优化,并进一步放宽标准的限制来提升性能。
    • 可以导致不符合标准的行为,需要谨慎使用。

开启所有优化,针对本地机器的CPU架构进行优化:

gcc -Ofast -march=native -o my_program my_program.c 

-O1 打开的优化选项

  • -fdefer-pop:延迟栈的弹出时间。当完

  • 62
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值