【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.mzph.cn/pingmian/61212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的文本信息提取方法研究(pytorch python textcnn框架)

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

leetcode400第N位数字

代码 class Solution {public int findNthDigit(int n) {int base 1;//位数int weight 9;//权重while(n>(long)base*weight){//300n-base*weight;base;weight*10;}//n111 base3 weight900;n--;int res (int)Math.pow(10,base-1)n/base;int index n%base;return String…

Redis环境部署(主从模式、哨兵模式、集群模式)

一、概述 REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库…

sql数据库-权限控制-DCL

目录 常用权限类别 查询用户权限 举例 授予用户权限 删除权限 常用权限类别 权限说明ALL,ALL PRIVILEGES所有权限SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据ALTER修改表DROP删除数据库/表/视图CREATE创建数据库/表 查询用户权限 show grants for 用户名…

Linux进阶:常用操作

systemctl: 控制系统服务的启动、关闭 系统内置服务均可被systemctl控制第三方软件,如果自动注册了可以被systemctl控制第三方软件,如果没有自动注册,可以手动注册 语法:systemctl start | stop | restart | disable…

从源头保障电力安全:输电线路动态增容与温度监测技术详解

在电力系统中,输电线路是电能传输的关键环节。然而,当导线温度过高时,会加速导线老化,降低绝缘性能,甚至引发短路、火灾等严重事故,对电网安全运行构成巨大威胁。近日,某地区因持续高温和用电负…

vue2动态导出多级表头表格

需求:导出多级表格,如下,每个人名对应的是不同的城市金钱和年龄,日期占俩行,需要根据数据进行动态展示 1.效果 2.关键代码讲解 2.1数据源 2.2所需插件 npm install xlsx 2.3关键代码 创建name组和date组&#xff0c…

蓝桥杯每日真题 - 第16天

题目:(卡牌) 题目描述(13届 C&C B组C题) 解题思路: 题目分析: 有 n 种卡牌,每种卡牌的现有数量为 a[i],所需的最大数量为 b[i],还有 m 张空白卡牌。 每…

在Unity中使用Epplus写Excel

Overview 本文旨在帮助你快速入门,该库发展多年内容庞大(官方文档写的极好:https://github.com/EPPlusSoftware/EPPlus/wiki),有些功能在Unity环境可能你永远都不会使用. 官方的一个Demo: https://github.com/EPPlusSoftware/EPPlus.Samples.CSharp 如果你只有读的需求,可以…

Python爬虫下载新闻,Flask展现新闻(2)

上篇讲了用Python从新闻网站上下载新闻,本篇讲用Flask展现新闻。关于Flask安装网上好多教程,不赘述。下面主要讲 HTML-Flask-数据 的关系。 简洁版 如图,页面简单,主要显示新闻标题。 分页,使用最简单的分页技术&…

vscode 执行 vue 命令无效/禁止运行

在cmd使用命令可以创建vue项目但是在vscode上面使用命令却不行 一、问题描述 在 cmd 中已确认vue、node、npm命令可以识别运行,但是在 vscode 编辑器中 vue 命令被禁止,详细报错为:vue : 无法加载文件 D:\Software\nodejs\node_global\vue.…

Centos7安装Jenkins脚本一键部署

公司原先Jenkins二进制安装,自己闲来无事在测试主机优化了一下,一键部署,jenkins2.426版本jdk11版本 #!/bin/bashjenkins_file"jenkins-2.426.3-1.1.noarch.rpm"# 更新软件包列表 echo "更新软件包列表..." sudo yum up…

基于AIRTEST和Jmeter、Postman的自动化测试框架

基于目前项目和团队技术升级,采用了UI自动化和接口自动化联动数据,进行相关测试活动,获得更好的测试质量和测试结果。

QT基础 UI编辑器 QT5.12.3环境 C++环境

一、UI编辑器 注意:创建工程时,要勾上界面按钮 UI设计师界面的模块 UI编辑器会在项目构建目录中自动生成一个ui_xxx.h(构建一次才能生成代码),来表示ui编辑器界面的代码,属于自动生成的,一定不…

关于win11电脑连接wifi的同时,开启热点供其它设备连接

背景: 我想要捕获手机流量,需要让手机连接上电脑的热点。那么问题来了,我是笔记本电脑,只能连接wifi上网,此时我的笔记本电脑还能开启热点供手机连接吗?可以。 上述内容,涉及到3台设备&#x…

题解 洛谷 Luogu P2440 木材加工 二分答案 C/C++

题目传送门: P2440 木材加工 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P2440思路 很简单的二分答案 每次找区间中点 m,判断每段长度为 m 时木头段总数是否 > k 即可 有两个细节需要注意一下 1.left 初始值应为 1 而非 0&…

恒利联创携手Pearson VUE 亮相第62届高博会

2024年11月15日-17日,第62届中国高等教育博览会(简称“高博会”)在重庆举行,恒利联创携手全球领先的考试服务提供商Pearson Vue Certiport共同亮相,为中国院校展现并提供数字化职业技能的教育平台及学练考体系。 作为P…

网络工程师教程第6版(2024年最新版)

网络工程师教程(第6版)由清华大学出版社出版,由工业和信息化部教育与考试中心组编,张永刚、王涛、高振江任主编,具体介绍如下。 相关信息: 出版社: 清华大学出版社 ISBN:9787302669197 内容简介: 本书是工业和信息化部教育与考试中心组织编写的考试用书。本书 根据…

<项目代码>YOLOv8 瞳孔识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪

这里写目录标题 1.目标检测 Detection2.实例分割 segment3.图像分类 classify4.关键点估计 Keypoint detection5.视频帧检测 video detect6.视频帧分类 video classify7.旋转目标检测 obb detect8.替换yolo11模型 给我点个赞吧,谢谢了附录coco80类名称 笔记本 华为m…