浅谈Linux环境下gcc优化级别

 更新时间:2017年09月30日 16:17:24   作者:yanghan1233  
这篇文章主要介绍了Linux环境下gcc优化级别,涉及gcc系列的相关内容,具有一定参考价值,需要的朋友可以了解下。

代码优化可以说是一个非常复杂而又非常重要的问题,以笔者多年的linux c开发经验来说优化通常分为两个方面,一是人为优化,也就是基于编程经验采用更简易的数据结构函数等来降低编译器负担,二是采用系统自带的优化模式,也就是gcc - o系列,下面我将简述一下各级优化的过程以及实现。

gcc - o1 首先o1上面还有一个o0,那个是不提供任何优化,项目中几乎不会使用,而o1使用就非常广泛了,o1是最基本的优化,主要对代码的分支,表达式,常量来进行优化,编译器会在较短的时间下将代码变得更加短小,这样体积就会变得更小,会减少内存的占用率,在操作系统进行内存调度时就会更快。但是事情没有绝对的优点,当一个庞大的程序被拆碎细分的话,内存占用会大大增加,由于当今系统大多数都是多线程,就会出现卡顿和反应延迟。

gcc - o2 这个优化级别是o1的进阶,在上一级的基础上会进行更严格的细分,最重要的是加入了寄存器的使用。寄存器是cpu中重要的组成部分,此外还有运算器和控制器,计算机顾名思义,要进行各种庞杂的计算,由于cpu速度较快,所以计算的中间结果都会保存在寄存器中,这样可以大大提高系统的效率,但是寄存器造价高昂,数量有限,所以一般来说程序不会放在寄存器中,另一种将代码放在寄存器的方式是使用register修饰变量,适用于频繁调用的变量。

gcc - o3 这个优化属于非常强大的优化,因为编译器会进行预测,对循环每一层的预测,以便于将循环拆分,可以提高执行效率。编译器还会试图用已有的值来代替未知的值,并且还会用加代替乘,因为运算器的特性,乘法十分复杂耗时。当然o3的缺点最明显,那就是o3因为试图预测程序的走向,可能会出现误差,导致错误和程序不可逆转的走向。所以一般o3不建议使用。
以上就是关于优化的三个等级,对于优化,系统的优化还是机械的,程序员对于语言深刻的理解,巧妙地算法可能会更有意义。

总结

以上就是本文关于浅谈Linux环境下gcc优化级别的全部内容,希望对大家有所帮助。欢迎大家继续参阅本站其他相关专题,感谢朋友们对脚本之家网站的支持。

相关文章

  • centos 7中添加一个新用户并授权的步骤详解

    centos 7中添加一个新用户并授权的步骤详解

    这篇文章主要给大家介绍了关于在centos 7中添加一个新用户并授权的步骤,文中将实现的步骤介绍的非常详细,通过文中介绍的步骤可以轻松的创建一个新用户并授权,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • Ubuntu环境编译安装PHP和Nginx的方法

    Ubuntu环境编译安装PHP和Nginx的方法

    这篇文章主要介绍了Ubuntu环境编译安装PHP和Nginx的方法,较为详细的分析了Ubuntu环境编译安装PHP和Nginx的具体步骤、相关命令与操作技巧,需要的朋友可以参考下
    2019-08-08
  • linux杀进程的多种方法

    linux杀进程的多种方法

    这篇文章主要介绍了linux杀进程的多种方法,需要的朋友可以参考下
    2014-03-03
  • win10 装centos7 虚拟机

    win10 装centos7 虚拟机

    虚拟机安装网上教程很多,碰到问题也容易解决,这里就记录下便于自己翻越,有不足之处还请指明,不吝赐教
    2019-01-01
  • linux 进程数最大值修改方法

    linux 进程数最大值修改方法

    这篇文章主要介绍了linux 进程数最大值修改方法,非常不错具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • linux 安装配置lamp v2

    linux 安装配置lamp v2

    距离第一个版本已经有一年了。修正了几个错误的地方,还有取消了某些lib的安装,因为centos有,所以相关的lib安装我都没有去查找错误。
    2009-02-02
  • Linux查看文件大小的几种方法汇总

    Linux查看文件大小的几种方法汇总

    这篇文章主要介绍了Linux查看文件大小的几种方法汇总,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境

    Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境

    本文为大家分享了如何在Centos7系统下搭建.NET Core2.0+Nginx+Supervisor环境,部署方法非常详细
    2018-10-10
  • Linux服务器和docker时区修改问题

    Linux服务器和docker时区修改问题

    这篇文章主要介绍了Linux服务器和docker时区修改问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • vim的一些常用简单操作小结

    vim的一些常用简单操作小结

    大家都知道vim在Linux下使用很多,但是习惯了在Windows下的文本操作,在vim中进行文本操作会觉得很不方便,但是vim是一个很强大的工具,只是还不熟练去使用它,下面是一些常用的vim文本操作方法。
    2016-09-09

最新评论