重点:如果使用多个-O选项(包含或不包含级别编号),则最后一个选项是有效的选项。
------------

------------

------------
例如:
#pragma GCC optimize(2)
#pragma G++ optimize(2)
这就是传说中的氧气优化

------------

以下总结来源于网络

-O、-O1:优化编译需要更多时间,并且大型函数需要更多内存。使用-O选项,编译器会尝试减小代码尺寸减少执行时间,不执行任何需要大量编译时间的优化。

-O选项打开了如下优化标志:

-fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim -fcprop-registers -fdce -fdefer-pop
-fdelayed-branch -fdse -fforward-propagate -fguess-branch-probability -fif-conversion2 -fif-conversion
-finline-functions-called-once -fipa-pure-const -fipa-profile -fipa-reference -fmerge-constants -fmove-loop-invariants
-fshrink-wrap -fsplit-wide-types -ftree-bit-ccp -ftree-ccp -fssa-phiopt -ftree-ch -ftree-copy-prop -ftree-copyrename -ftree-dce
-ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-sink -ftree-slsr -ftree-sra -ftree-pta
-ftree-ter -funit-at-a-time

------------

-O2:相对-O优化更多。 GCC几乎执行所有支持的优化,但不涉及空速权衡。 与-O相比,此选项增加了编译时间和生成代码的性能。

-O2除了打开所有-O指定的优化标志,还打开了如下优化标志:

-fthread-jumps
-falign-functions  -falign-jumps -falign-loops  -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps
-fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively -fexpensive-optimizations -fgcse
-fgcse-lm -fhoist-adjacent-loads -finline-small-functions -findirect-inlining -fipa-cp -fipa-cp-alignment -fipa-sra -fipa-icf
-fisolate-erroneous-paths-dereference -flra-remat -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole2
-freorder-blocks -freorder-blocks-and-partition -freorder-functions -frerun-cse-after-loop -fsched-interblock  -fsched-spec
-fschedule-insns  -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -ftree-builtin-call-dce -ftree-switch-conversion
-ftree-tail-merge -ftree-pre -ftree-vrp -fipa-ra

------------

-O3:相对-O2优化更多。

-O3除了打开所有-O2指定的优化标志,还打开了如下优化标志:

-finline-functions, -funswitch-loops,
-fpredictive-commoning, -fgcse-after-reload, -ftree-loop-vectorize, -ftree-loop-distribute-patterns, -ftree-slp-vectorize,
-fvect-cost-model, -ftree-partial-pre and -fipa-cp-clone

------------
-O0:减少编译时间并使调试可以产生预期的结果,这也是默认的优化等级。

------------
-Os:优化尺寸。 -Os启用所有通常不会增加代码大小的-O2优化。 它还执行旨在减少代码大小的进一步优化。

-Os关闭如下优化标志:

-falign-functions  -falign-jumps  -falign-loops -falign-labels  -freorder-blocks
-freorder-blocks-and-partition -fprefetch-loop-arrays

------------

-Ofast:无视严格的标准合规性。 -Ofast启用所有-O3优化。 它还打开并非对所有符合标准的程序有效的优化。 它打开

-ffast-math和Fortran特定的-fno-protect-parens和-fstack-arrays。

------------
Og:优化调试体验。 -Og启用不会干扰调试的优化。 它是标准编辑 - 编译 - 调试周期可以选择的优化级别,提供合理的优化级别,同时保持快速编译和良好的调试体验

O2优化的实质的更多相关文章

  1. c++ o2 优化

    有时候,写代码的时候要卡常 这时候就要用到o2优化 #pragma GCC optimize(2) 只要把这句话加在程序开头,就可以手动开o2优化了

  2. C++手动开O2优化

    O2优化能使程序的编译效率大大提升. 从而减少程序的运行时间,达到优化的效果. C++程序中的O2开关如下所示: #pragma GCC optimize(2) 同理O1.O3优化只需修改括号中的数即 ...

  3. 快读&快写模板【附O2优化】

    快读&快写模板 快读快写,顾名思义,就是提升输入和输出的速度.在这里简单介绍一下几种输入输出的优劣. C++ cin/cout 输入输出:优点是读入的时候不用管数据类型,也就是说不用背scan ...

  4. 洛谷 P2634 [国家集训队]聪聪可可-树分治(点分治,容斥版) +读入挂+手动O2优化吸点氧才过。。。-树上路径为3的倍数的路径数量

    P2634 [国家集训队]聪聪可可 题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一 ...

  5. gcc O2优化选项对内嵌汇编以及函数递归调用的影响

    学习和使用c这些年来,很多方面都未深入研究过,就如脱离了IDE后,我可能连编译一个c文件的命令都写不出来. 最近需要在c中内嵌汇编解决问题,参考网上相关的资料写了一段汇编代码,在测试的时候时好时坏,找 ...

  6. 卡常的编译命令(含O2优化)

    不解释,直接来 //包括O2,O3之类的编译命令 //直接copy and paste #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma ...

  7. 如何开启O2优化

    O2环境会使你的程序跑的特别快,然而大多数正式考试都不能开O2 然而平时做有些题强制开O2,会出现在本机运行正确,但是交上去RE的情况,这时你就要开O2了. 例如在本机运行时会有下标为-但可以运行,而 ...

  8. o2优化(手动)

    #pragma GCC optimize(2) 将这句话放到程序开头即可

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

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

随机推荐

  1. mini木马c源码

    #pragma comment(lib, "ws2_32.lib") #pragma comment(linker,"/subsystem:\"windows\ ...

  2. php+mysql新无线级分类

    create table cat( id int unsigned not null primary key auto_increment, pid , path ) not null default ...

  3. raft算法解析

    一.raft算法引入 在寻找一种易于理解的一致性算法的研究(In Search of an Understandable Consensus Algorithm-extended version) 论 ...

  4. 12 | 从0到1:你的第一个GUI自动化测试

  5. asp.net core 2.2 生产环境直接更新View页面并立即生效

    有的时候我们会直接在生产环境上更新页面文件,比如更改了JS代码,CSS代码或页面的文案,布局等.这种没有改到后台代码的情况一般就是直接发布页面文件了,在asp.net core 2.2以前的版本(没有 ...

  6. 高效 MacBook 工作环境配置,超实用!

    作者:正鹏 & 隃墨 http://www.xialeizhou.com/?p=71 前言 工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了工具而工具,一切工具都是为了能快速准确 ...

  7. shell 循环打印某一天后的n天的日期

    #!/bin/bash start_date="2017-10-26" for i in `seq 0 30` do num=$((${i}+1)) datatime=`date ...

  8. Vue技术点整理-Vue CLI安装详解

     一,脚手架安装 Node 版本要求 Vue CLI 需要 Node.js +).你可以使用 nvm 或 nvm-windows 在同一台电脑中管理多个 Node 版本. 1,全局安装Vue CLI ...

  9. Java程序运行原理分析

    class文件内容 class文件包含Java程序执行的字节码 数据严格按照格式紧凑排列在class文件的二进制流,中间无分割符 文件开头有一个0xcafebabe(16进制)特殊的标志 JVM运行时 ...

  10. 关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享

    最近公司工作的电脑突然自动加上了屏保锁屏,百思不得其解什么时候设置的,谁给设置的,未经用户允许就擅自给用户设置了??? 金山WPS未经用户允许给用户设置了锁屏屏保,而且这个功能非常不好用,按键盘有时候 ...