当前位置: 首页 > article >正文

【GNU】gcc -O编译选项 -Og -O0 -O1 -O2 -O3 -Os

1、gcc -O的作用

        GCC 提供的 -O 系列选项用于优化代码。这些选项可以控制编译器对代码进行优化的程度和类型,从而提高代码的性能、减小代码体积或优化其他特性。

2、gcc -Og -O0 -O1 -O2 -O3 -Os

2.1  gcc -Og

  • 启用调试友好的优化,平衡调试器功能与性能之间的关系。
  • 不会进行复杂的代码重排,保留了源代码和生成代码的对应关系。

2.2  gcc -O0

  • 不进行任何优化。
  • 编译速度最快。
  • 生成的目标代码直接反映源代码的逻辑顺序。
  • 源代码与机器指令一一对应,适合调试。

2.3  gcc -O1

  • 特点:
    • 开启基本优化,改进程序的性能和代码质量。
    • 优化不会显著增加编译时间。
    • 不会对代码做复杂重排,因此仍然适合调试。
  • 优化类型:
    • 删除无用代码(Dead Code Elimination)。
    • 合并常量(Constant Merging)。
    • 简单的表达式优化(Simple Expression Simplification)。
    • 减少寄存器使用(Register Usage Reduction)。

2.4  gcc -O2

  • 特点:
    • 启用 GCC 提供的绝大多数优化选项(不包括占用大量时间或可能不稳定的优化)。
    • 生成高效代码,适合用于生产环境。
    • 会显著增加编译时间,可能会使调试更困难。
  • 优化类型:
    • 启用 -O1 中的所有优化。
    • 循环优化(Loop Optimization)。
    • 指令调度(Instruction Scheduling)。
    • 减少分支跳转(Branch Prediction)。
    • 移除不必要的变量复制(Variable Copy Elimination)。

2.5  gcc -O3

  • 特点:
    • 启用所有可以提升性能的优化选项,包括一些更激进的优化。
    • 可能会增加代码体积,并且有时会导致调试器难以正确工作。
  • 优化类型:
    • 启用 -O2 中的所有优化。
    • 函数内联(Function Inlining)。
    • 循环展开(Loop Unrolling)。
    • 自动向量化(Auto-vectorization)。
    • 内存预取(Memory Prefetching)。

2.6  gcc -Os

  • -O2 的基础上,进一步优化代码体积。
  • 移除可能增加代码大小的优化(如循环展开和函数内联)。

http://www.kler.cn/a/401288.html

相关文章:

  • 小试牛刀-Anchor安装和基础测试
  • (33)iptables设置防火墙策略常用命令(docker环境、非docker环境)
  • stm32启动过程解析startup启动文件
  • 基于 MONAI 的 3D 图像分割任务2(Brain Tumour 和 SwinUNETR 训练)
  • 黑马智数Day10
  • .NET 简介
  • 字符串地址解析 省市区
  • 20241119
  • 【Mac】未能完成该操作 Unable to locate a Java Runtime
  • HBase 基础操作
  • P1014 [NOIP1999 普及组] Cantor 表
  • 以Java为例,实现一个简单的命令行图书管理系统,包括添加图书、删除图书、查找图书等功能。
  • 【MySQL】系统学习数据库查询:深度学习查询操作全面详解
  • 二叉树(2)
  • Springboot项目搭建(1)-用户登录与注册
  • JavaScript 高级—求数组的最大值与最小值
  • llm模型训练导出部署一条龙
  • django——创建 Django 项目和 APP
  • STM32(hal库)中,__HAL_LINKDMA 函数使用时候,串口的handler DMA_HandleTypedef 为什么前面要加extern
  • 网络协议(4)拥塞控制
  • jvm原理介绍
  • vue-office:word(.docx)、pdf、excel(.xlsx,.xls)格式文件预览
  • 【FL0021】基于SpringBoot和微信小程序的高校就业招聘系统
  • 私域流量与视频号直播的融合创新:以 2+1 链动模式 S2B2C 商城小程序为例
  • 大型语言模型综述 A Survey of Large Language Models
  • M3-拟时序分许-3. 数据预处理、对齐和降维