四种编译优化类型的解释:

`-O ' 
`-O1 ' 
                Optimize.      Optimizing   compilation   takes   somewhat   more   time,   and   a 
                lot   more   memory   for   a   large   function. 
  
                With   `-O ',   the   compiler   tries   to   reduce   code   size   and   execution 
                time,   without   performing   any   optimizations   that   take   a   great   deal 
                of   compilation   time. 
  
                `-O '   turns   on   the   following   optimization   flags: 
                               -fdefer-pop    
                               -fdelayed-branch    
                               -fguess-branch-probability    
                               -fcprop-registers    
                               -floop-optimize    
                               -fif-conversion    
                               -fif-conversion2    
                               -ftree-ccp    
                               -ftree-dce    
                               -ftree-dominator-opts    
                               -ftree-dse    
                               -ftree-ter    
                               -ftree-lrs    
                               -ftree-sra    
                               -ftree-copyrename    
                               -ftree-fre    
                               -ftree-ch    
                               -funit-at-a-time    
                               -fmerge-constants 
  
                `-O '   also   turns   on   `-fomit-frame-pointer '   on   machines   where   doing 
                so   does   not   interfere   with   debugging. 
  
                `-O '   doesn 't   turn   on   `-ftree-sra '   for   the   Ada   compiler.      This 
                option   must   be   explicitly   specified   on   the   command   line   to   be 
                enabled   for   the   Ada   compiler. 
  
`-O2 ' 
                Optimize   even   more.      GCC   performs   nearly   all   supported 
                optimizations   that   do   not   involve   a   space-speed   tradeoff.      The 
                compiler   does   not   perform   loop   unrolling   or   function   inlining   when 
                you   specify   `-O2 '.      As   compared   to   `-O ',   this   option   increases 
                both   compilation   time   and   the   performance   of   the   generated   code. 
  
                `-O2 '   turns   on   all   optimization   flags   specified   by   `-O '.      It   also 
                turns   on   the   following   optimization   flags: 
                               -fthread-jumps    
                               -fcrossjumping    
                               -foptimize-sibling-calls    
                               -fcse-follow-jumps      -fcse-skip-blocks    
                               -fgcse      -fgcse-lm       
                               -fexpensive-optimizations    
                               -fstrength-reduce    
                               -frerun-cse-after-loop      -frerun-loop-opt    
                               -fcaller-saves    
                               -fpeephole2    
                               -fschedule-insns      -fschedule-insns2    
                               -fsched-interblock      -fsched-spec    
                               -fregmove    
                               -fstrict-aliasing    
                               -fdelete-null-pointer-checks    
                               -freorder-blocks      -freorder-functions    
                               -falign-functions      -falign-jumps    
                               -falign-loops      -falign-labels    
                               -ftree-vrp    
                               -ftree-pre 
  
                Please   note   the   warning   under   `-fgcse '   about   invoking   `-O2 '   on 
                programs   that   use   computed   gotos. 
  
`-O3 ' 
                Optimize   yet   more.      `-O3 '   turns   on   all   optimizations   specified   by 
                `-O2 '   and   also   turns   on   the   `-finline-functions ', 
                `-funswitch-loops '   and   `-fgcse-after-reload '   options. 
  
`-O0 ' 
                Do   not   optimize.      This   is   the   default.

还有个常用的优化选项: -Os

它相当于-O2.5。是使用了所有-O2的优化选项,但又不缩减代码尺寸的方法。

参考文档: https://www.linuxjournal.com/article/7269

https://www.cnblogs.com/dylancao/p/9528432.html

GCC 优化选项 -O1 -O2 -O3 -OS 优先级,-FOMIT-FRAME-POINTER(O3的优化很小,只增加了几条优化而已)的更多相关文章

  1. gcc 优化选项 -O1 -O2 -O3 -Os 优先级

    http://hi.baidu.com/xiaole10368/item/7cea9b1369cc240db88a1a5c 少优化->多优化: O0 -->> O1 -->&g ...

  2. gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer

    英文:https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Optimize-Options.html#Optimize-Options 少优化->多优化: ...

  3. 警惕arm-linux-gcc编译器优化选项

    arm-linux-gcc的优化选项例如(-O2),可以加速我们的程序,使程序执行效率更高.但是,倘若我们就是需要程序慢一点运行,但是优化却把我们的延时函数优化的没有了的时候,这种优化却不是我们想要的 ...

  4. gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化【转】

    转自:http://blog.csdn.net/qinrenzhi/article/details/78334677 相关博客http://blog.chinaunix.net/uid-2495495 ...

  5. gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

    参考链接 : http://blog.csdn.net/qq_31108501/article/details/51842166 gcc -D选项的作用,声明宏 参考链接:  http://blog. ...

  6. gcc/g++ -O 优化选项说明

    查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. 除了-O0以外,每一 ...

  7. gcc options选项的优化及选择

    gcc options选项的优化 -c和-o都是gcc编译器的可选参数[options] -c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件,一般是.o文件.[只 ...

  8. GCC优化选项-fomit-frame-pointer对于esp和ebp优化的作用

    我的博客:www.while0.com -fomit-frame-pointer选项是发布产品时经常会用到的优化选项,它可以优化汇编函数中用edp协助获取堆栈中函数参数的部分,不使用edp,而是通过计 ...

  9. Object.assign(o1, o2, o3) 对象 复制 合拼

    Object 对象方法学习之(1)—— 使用 Object.assign 复制对象.合并对象 合并对象 var o1 = {a: 1}; var o2 = {b: 2}; var o3 = {c: 3 ...

随机推荐

  1. [C++设计模式] strategy 策略模式

    依照陈硕老师的观点.c++里有面向过程编程.面向对象编程,基于对象编程(面向接口编程)和泛型编程.四种思路都各有其适用场景. 面向过程编程是沿袭C的结构化编程思路,OOP是C++的核心,也是现代高级编 ...

  2. UVA - 12230 Crossing Rivers 概率期望

    You live in a village but work in another village. You decided to follow the straight path between y ...

  3. 主流的Python领域和框架--转

    原文地址:https://www.zhihu.com/question/19899608

  4. js获取浏览器中相关容器的高度

    网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offset ...

  5. JavaScript基础知识-正则表达式

    正则表达式 作用:定义一个特定的验证字符串内容规则的表达式 注:正则表达式并不是JavaScript独有的:JavaScript支持正则表达式 var a = { };  // 定义一个空对象     ...

  6. 关于windows 2008 64位系统驱动的加载问题

    三点: 1.bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS. 2.bcdedit /set testsigning on. 3.使用X64编译驱动 ...

  7. 《鸟哥的Linux私房菜》笔记——04. 简单命令行

    键入命令 [dmtsai@study ~]$ command [-options] parameter1 parameter2 ... 指令 選項 參數(1) 參數(2) 注意:有时也可以使用 + 放 ...

  8. Lambda 表达式-即匿名函数

    拉姆达值(Lambda),希腊字母表示为Λ,指与真空的空间有关的能量或暗能量.   代表转换的常量.或者转换本身.   Lambda 表达式 Lambda 表达式”是一个匿名函数,可以包含表达式和语句 ...

  9. LeetCode Golang 8. 字符串转换整数 (atoi)

    8. 字符串转换整数 (atoi) 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组 ...

  10. 基于 OSGi 的面向服务的组件编程

    作者:曹 羽中 (caoyuz@cn.ibm.com), 软件工程师, IBM中国开发中心 出处:http://www.ibm.com/developerworks/cn/opensource/os- ...