• GCC编译优化选项


    -march

    第一个重要的选项是-march。这个选项告诉编译器该为你的处理器架构(architecture)(或arch)生成何种代码,它告诉编译器只为特定类型的CPU生成代码。不同的CPU具有不同的能力,支持不同的指令集,以及不同的执行代码方式。-march标记指示编译器根据你CPU的能力、特征、指令集、怪癖等生成特定的代码。

    即使/etc/make.conf中的CHOST变量指定了所使用的通用构架,-march还是可以用来为特定的处理器优化程序。x86和x86-64(也包括其他的)的CPU尤其应该利用-march标记。

    -O

    接下来是-O变量。这个选项控制所有的优化等级。使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候。

    -O设置一共有五种:-O0-O1-O2-O3-Os。你只能在/etc/make.conf里面设置其中的一种。

    除了-O0以外,每一个-O设置都会多启用几个选项,请查阅gcc手册的优化选项章节,以便了解每个-O等级启用了哪些选项及它们有何作用。

    让我们来逐一考察各个优化等级:

    • -O0:这个等级(字母“O”后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级。这样就不会优化代码,这通常不是我们想要的。
    • -O1:这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。
    • -O2-O1的进阶。这是推荐的优化等级,除非你有特殊的需求。-O2会比-O1启用多一些标记。设置了-O2后,编译器会试图提高代码性能而不会增大体积和大量占用的编译时间。
    • -O3:这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且在使用gcc4.x的系统里不应全局启用。自从3.x版本以来gcc的行为已经有了极大地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,而gcc4.x中还未必更快。用-O3来编译所有的软件包产生更大体积更耗内存的二进制文件,大大增加编译失败的机会或不可预知的程序行为(包括错误)。这样做将得不偿失,记住过犹不及。gcc 4.x.中使用-O3是不推荐的
    • -Os:这个等级用来优化代码尺寸。其中启用了-O2中不会增加磁盘空间占用的代码生成选项。这对于磁盘空间极其紧张或者CPU缓存较小的机器非常有用。但也可能产生些许问题,因此软件树中的大部分ebuild都过滤掉这个等级的优化。使用-Os是不推荐的。

    正如前面所提到的,-O2是推荐的优化等级。如果编译软件出现错误,请先检查是否启用了-O3。再试试把CFLAGS和CXXFLAGS倒回到较低的等级,如-O1甚或-O0 -g2 -ggdb(用来报告错误和检查可能存在的问题),再重新编译。

    -pipe

    -pipe是个安全而有趣的标记。它对代码生成毫无影响,但是可以加快编译过程。此标记指示编译器在不同编译时期使用pipe而不是临时文件。

    -fomit-frame-pointer

    这是个用来削减代码尺寸的常用标记。在所有不影响除错(例如x86-64)的构架上,所有的-O等级(除了-O0)中都启用了它,但是也可能需要手动添加到你的标记中。尽管GNU gcc手册没有明确指出-O会启用这个标记的所有构架,你需要在x86上手动启用它。

    -msse, -msse2, -msse3, -mmmx, -m3dnow

    这些标记启用了x86和x86-64构架的SSESSE2SSE3MMX3DNow!指令集。他们主要用于多媒体,游戏,及其他浮点运算密集的任务,虽然也包括了一些其他的数学增强指令。比较新的CPU都具有这些指令。

  • 相关阅读:
    Oracle 语法中的 INSERT INTO
    [Oracle]高效的SQL语句之分析函数(一)sum()
    Oracle:trunc()函数简介
    ORACLE 调试输出,字符串执行函数
    Oracle 的几种循环方式介绍
    js 判断字符串是否存在某个字符串
    IntelliJ IDEA 2021.3 旗舰版 官方中文正式版(附汉化包+安装教程)
    主线程中同步的 XMLHttpRequest 已不推荐使用,因其对终端用户的用户体验存在负面影响。可访问 http://xhr.spec.whatwg.org/ 详细了解
    js杂记:x:function(){}
    ORACLE 两表关联更新三种方式
  • 原文地址:https://www.cnblogs.com/wolfrickwang/p/3622660.html
Copyright © 2020-2023  润新知