-O0

-O1

-O2

-O3

编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最(此处为大写字母O)

优化选项(来源:http://blog.csdn.net/Sodier/article/details/452566)

这一部分的内容可以分成两部分,一部分是让编译器对代码进行分析后,进行的代码优化,另一部分是我们可以为编译器制定一些关于硬件的信息,让他生成对硬件结合的更好的代码,而我们之所以要用源代码来编译程序,很多情况下,是出于这方面的原因。

首先来看代码优化,从代码的整体优化上,GCC提供了下面的选项

-O –O1

这两个选项的含义是一样的,GCC将执行减少代码尺寸和执行时间的优化,对于那些会严重影响编译时间的优化选项,这个级别的优化并不会执行。

-O2

在这一级别GCC将会提供所有支持的优化,但这其中并不包括以空间换时间的优化手段,例如编译器不会使用循环展开和函数内联。和-O相比,该选项进一步加快了编译时间和生成代码的性能。

-O3

除了-O2提供的优化选项外,还指定了-finline-functions,-funswitch-loops和-fgcse-afer-reload选项,目的只有一个就是全力执行代码优化。

-Os

这个选项是专门用来优化代码尺寸的,-Os打开了所有-O2级别中不会显著增长代码尺寸的优化选项

-O0

该选项代表不执行优化

在这里要说明的是,尽管GCC提供了1~3和s这4个整体优化选项,但从实际的优化效果上来看,往往O3优化出来的程序的效率并不是最高的,而大部分情况下我们都在使用-O2,如果你希望获得最高的效率利益,那么不妨这4个选项都试试。另外,其实这些选项只不过是GCC提供的很多单方面优化的一个组合,如果你想了解更为具体的优化内容,可以去查看GCC手册,出于篇幅限制,这里不细谈了。最后要记住的一点是,如果你的程序是用于高精度数值计算的,那么记住不要使用上面任何的优化选项。

#gcc笔记01#gcc编译选项 -O0 -O1 -O2 -O3相关推荐

  1. Makefile 中 -wl ,rpath 以及 O0 O1 O2 O3 Os 的用法

    再makefile中一般默认的 lib 的加载路径是/lib /usr/lib  如果想要改变程序运行时的libs的加载路径 就需要用到 -wl , rpath 参数来添加lib 加载路径. O0 O ...

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

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

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

    相关博客http://blog.chinaunix.net/uid-24954950-id-2956476.html 相关博客http://blog.csdn.net/misiter/article/ ...

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

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

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

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

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

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

  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. c++ -O1,-O2,-O3资料整理

    原文:http://blog.csdn.net/xinianbuxiu/article/details/51844994 1.从.c文件到可执行文件,其间经历了几步? 高级语言是偏向人,按照人的思维方 ...

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

    O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化. O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间. O3在O2的基础上进行更多的优化 ...

最新文章

  1. socket绑定INADDR_ANY
  2. 微型计算机2018读者调查,《微型计算机》2018年度电竞品牌影响力调查获奖读者揭晓!...
  3. 50 种不同编程语言的“Hello World”,你知多少?
  4. Lockdown Wheelie项目
  5. 网络爬虫--12.【XPath实战】获取百度贴吧中的图片
  6. 介绍一个十分好用的JQUERY图片放大镜插件
  7. WinForm下屏幕截图程序的实现
  8. Kafka的rebalance机制
  9. Ubuntu18.04安装福昕阅读器
  10. android谷歌安装插件,安卓手机安装CHROME插件
  11. 米思齐(Mixly)图形化系列教程(三)-变量
  12. 寻找生态位置,中小险企破局生态建设——保险生态建设...
  13. 真格量化学习处理——几个功能小函数
  14. android自定义剪切板,Android10适配之剪切板
  15. 本地上运行正常,但是部署到了服务器却一直验证码错误(Nginx反向代理导致的session丢失问题)
  16. 每日一书丨这本书献给所有铸就开源世界的人们
  17. 还没有表白神器?情人节来喽,快为心爱的她送上一份专属的礼物吧~
  18. 用天球星座测量地球表面经纬度的方法
  19. 微信小程序 post请求发送x-www-form-urlencoded类型数据
  20. PC版微信内置浏览器 缓存文件保存位置

热门文章

  1. 获取服务器信息失效,获取服务器时间失败
  2. 超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2)
  3. ULTRON-360基于Flink的实时数仓平台
  4. exports 和 module.exports (自用,小技巧)
  5. python random模块下载,Python的random模块
  6. 我是如何顺利pass考过CCIE,分享一下自己心得
  7. 攻防世界web新手练习 -unseping
  8. 【2022版】Spring面试题整理(含答案解析)
  9. java毕业设计驾考预约系统(附源码、数据库)
  10. Manacher's Algorithm 马拉车算法