• O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。

    O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。

    O3在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。

    Os主要是对代码大小的优化,我们基本不用做更多的关心。 通常各种优化都会打乱程序的结构,让调试工作变得无从着手。并且会打乱执行顺序,依赖内存操作顺序的程序需要做相关处理才能确保程序的正确性。

  • -O0: 不做任何优化,这是默认的编译选项。

  • -O和-O1: 对程序做部分编译优化,对于大函数,优化编译占用稍微多的时间和相当大的内存。使用本项优化,编译器会尝试减小生成代码的尺寸,以及缩短执行时间,但并不执行需要占用大量编译时间的优化。 打开的优化选项:

  • O2优化能使程序的编译效率大大提升。

  • 从而减少程序的运行时间,达到优化的效果。

  • C++程序中的O2开关如下所示:

#pragma GCC optimize(2)
  • 同理O1、O3优化只需修改括号中的数即可。
  • 只需将这句话放到程序的开头即可打开O2优化开关。

开启O3优化:

#pragma GCC optimize(3,"Ofast","inline")

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)相关推荐

  1. GNU编译优化级别-O -O1 -O2 -O3

    最近做一个算法的GPU加速,发现实际上使用gcc的-O3(最高级编译优化)选项,可以获得很高的加速比,我的程序里达到了3倍的样子,有时效果甚至比GPU加速好.因此小小学习了下GNU的编译优化. 附言一 ...

  2. gcc优化等级-O0 -O1 -O2 -Os -O3

    gcc原文网址:https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Optimize-Options.html#Optimize-Options -O-O1 Op ...

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

    Gcc 编译优化简介 gcc 提供了为了满足用户不同程度的的优化需要,提供了近百种优化选项,用来对{编译时间,目标文件长度,执行效率}这个三维模型进行不同的取舍和平衡.优化的方法不一而足,总体上将有以 ...

  4. gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer(不积跬步无以至千里)

    -fomit-frame-pointer 在优化时候被启用,带来了效率的提升.看到一篇比较详细记录编译选项的文章,转发一下,同时给自己作一下备忘. 少优化->多优化: O0 -->> ...

  5. 如何手动开启O2优化

    如何手动开启O2优化 1.前言 2.内容 4.更新日志 1.前言 大部分情况下,开启O2优化可以加快编译的速度 但是要注意,并不是所有的情况都适用,有时可能会起到反效果~ 2.内容 #pragma G ...

  6. gcc 中-O -O1 -O2 -O3 -Os -Ofast -Og优化的原理

    一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的 p命令查看变量的值,改变变量的值等.并且把获取最快的编译速度作为它的目标. ...

  7. 【gcc】gcc优化等级 -O1 -O2 -O3 -Os -Ofast -Og

    目录 优化等级 -O1 -O2 -O3 -Os -Ofast -Og cmake 生成 debug和 release 版|Cmake设置优化等级 优化等级 -O1 -O2 -O3 -Os -Ofast ...

  8. makefile工作笔记0002---gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 相关博客http://blog.chinaunix.net/uid-24954950-id-295 ...

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

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

最新文章

  1. oracle子查询不减少数据,Oracle性能优化-子查询到特殊问题
  2. 重磅直播|计算深度分割技术的实现与全局效应下的结构光三维重建
  3. CISCO协议总结大全
  4. 给asterisk1.8.7添加menuselct选项
  5. 一台7纳米光刻机月产能有多大,何为能卖上亿美元?
  6. C和指针之字符串总结
  7. android 百度地图 在线建议查询,百度地图SDK-----百度地图在线建议查询,结合AutoCompleteTextView实现搜索下拉列表。...
  8. sqlmap指定cookie_利用SQLMap进行cookie注入
  9. 启动成功浏览器显示不了_移动端利用chrome浏览器在PC端进行调试方法
  10. unity3d与eclipse集成开发android应用
  11. Python:学习笔记之函数的参数和返回值
  12. exploration 和 exploitation 的区别
  13. NVelocity介绍
  14. carry函数在C语言中用法,动词carry用法小归纳
  15. Java ques: java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
  16. WeX5制作的app,界面模仿b站(哔哩哔哩弹幕视频网)客户端
  17. 找不到 xxx 的DNS地址,现在正在诊断问题
  18. 2015校招季,阿里、搜狗、百度、蘑菇街面试总结
  19. python 网格策略_Python版简单网格策略
  20. Top 25 sourceforge上开源项目介绍

热门文章

  1. 【模板】最新空web.xml模板
  2. Android11怎么截屏,对标IOS?Android11或无缘屏幕长截图
  3. 1535C. Unstable String
  4. java长连接转短连接_java原生程序redis连接(连接池/长连接和短连接)选择问题...
  5. inside uboot (三) 异常向量表
  6. openssl-1.0.0b - libssl 移植到ARM Linux
  7. asterisk几个通用函数说明
  8. xLite连接asterisk提示sip408错误
  9. java 参数 string_java(String和StringBuffer分别作为参数传递)
  10. 华为鸿蒙发布2.0,华为做到了!鸿蒙2.0正式发布,苹果安卓有危机?