首页 > 其他分享 >O0 O1 O2 O3优化原理

O0 O1 O2 O3优化原理

时间:2023-02-07 20:56:21浏览次数:46  
标签:GCC O3 O2 优化 optimize O1 O0

为了加快代码执行的效率,很多OJ平台都会自动开启O2优化。

在这里我们讲讲到底是怎么优化的。

O0优化

#pragma GCC optimize(0)
1、把变量分配到寄存器。

2、分析循环的会出现的各种情况,只保留一个退出循环的分支。

3、将没有用的代码删掉。

4、简化表达式和声明。

5、将用inline声明的内联函数变为函数调用。

O1优化

#pragma GCC optimize(1)
包含O0的各种优化功能,并增加了:
1、在变量赋值时,将数值直接赋给变量而不是给出变量的地址。

2、去掉没有用的变量和表达式。

3、去掉通用的表达式。

O2优化

#pragma GCC optimize(2)
包含O1的各种优化功能,并增加了:

1、去掉全局通用的子表达式。

2、去掉全局没有用的分配变量和表达式。

3、化解循环。

当只用-O选项时优化器自动进行-O2优化。

O3优化

#pragma GCC optimize(3)
包含O2的各种优化功能,并增加了:

1、去掉未调用的函数。

2、简化返回值未使用的函数。

3、将小函数进行内嵌调用。

4、对被调用的函数声明进行重新排序,以便被优化的调用方能够找到该函数。

5、完成文件级优化。

标签:GCC,O3,O2,优化,optimize,O1,O0
From: https://www.cnblogs.com/bujidao1128/p/17099777.html

相关文章

  • django1.4设置模板路径和CSS,JS,image等路径的方法
    对于DJANGO这类MVC框架来说,路径问题可以称为一个谜一样的东西,很多人因为对路径不知道如何处理而觉得MVC实在是云里雾里不知所云。本文主要解决django中关于模板路径设置、CS......
  • VisualStudio2022+Opencv配置
    下载OpenCVOpenCV官网下载下来的是一个exe可执行文件,运行后是一个解压程序,解压路径设置为找得到的就可以了。添加系统路径VisualStudio安装选择使用C++的桌面开发就可......
  • 亚马逊审核小书灯/阅读灯UL153测试费用周期?ISO17025实验室
    亚马逊审核小书灯/阅读灯UL153测试费用周期?ISO17025实验室咨询威❤:151-3562-9064程先生小书灯/阅读灯办理亚马逊测试标准UL153在美国亚马逊平台销售,遇到了审核的问题。......
  • Dubbo2.7的Dubbo SPI实现原理细节
    总结/朱季谦本文主要记录我对DubboSPI实现原理的理解,至于什么是SPI,我这里就不像其他博文一样详细地从概念再到JavaSPI细细分析了,直接开门见山来分享我对DubboSPI的见解......
  • 【P5196】【USACO19JAN】Cow Poetry G
    前言这是我们今天课上一道练习,结果全班就我一个过了。看到这道题我就有了思路(不过还是调了很久。Solution题意明白,不多赘述。首先考虑对于一行诗,凑足\(k\)个音节有......
  • P3119 [USACO15JAN]Grass Cownoisseur G 题解
    做过的原题,模拟赛时PDF里的题面实在有点难受。首先有显然结论:在一个环上反走一定是不值的,因为环上的点本来就相互可达。所以考虑缩点。缩点后的问题可以看成:求对于每一......
  • VMware Workstation Pro16安装Windows11
    报错:这台电脑无法运行Windows11解决方法设置窗口,设置访问控制密码添加可信任模块配置完成再启动虚机即可......
  • USACO2023 一月月赛 Platinum 3
    Platinum3分析树上的最优化问题先不动脑子DP一波。用\(f[i]\)表示将以\(i\)为根的子树中,所有子树都满足题设开灭条件所需要的最少次数。现在把这个子树画成下图这样,假......
  • USACO2023 一月月赛 Platinum 2
    受到样例的第四个询问启发,我们可以发现一个性质:一开始先让魔力积累,然后肯定是在最晚的那个时候,我们去把魔力池里该取的魔力取走,而不是一开始就和一个无头苍蝇一样在图上乱......
  • AXI4_LITE总线vivado2019.1源码(verilog实现)
    1.AXI_SLAVE源码`timescale1ns/1ps modulemyip_v1_0_S00_AXI# ( //Userstoaddparametershere //Userparametersends //Donotmodifythepa......