-Ofast:开启所有-O3优化,并放宽一些标准合规性检查(如浮点运算的精度),以获取更高的性能。 gcc -Ofast-o myprogram myprogram.c -march和-mtune:用于指定目标架构和调优选项,可以进一步提升性能。 gcc -O2 -march=native-mtune=native-o myprogram myprogram.c 这里-ma
◼ -O3: 打开所有 -O2 的优化选项并且增加 -finline-functions, -funswitch-loops,- fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize 优化选项。这是最高最危险 的优化等级。用这个选项会延长编译代码的时间,并且在使用 gcc4.x 的系统里不应全局 启用。自从 3.x 版本以来 gcc 的行为已...
幸而gcc 提供了从 O0-O3 以及 Os 这几种不同的优化级别供大家选择,在这些选项中,包含了大部分有效的编译优化选项,并且可以在这个基础上,对某些选项进行屏蔽或添加,从而大大降低了使用的难度,毕竟,在一定基础上进行取舍,比万事从头开始要好得多。下面着重围绕这几个不同的级别进行简单介绍。(由于 gcc 不同版本...
options常用编译选项: 优化选项:-O //大写字母的O -O0:不做任何优化,这是默认的编译选项。 -O1: 编译器会尝试减小生成代码的尺寸,以及缩短执行时间.它主要对代码的分支,常量以及表达式等进行优化,其中包括线程跳转和延迟退栈。 -O2:除了完成所有-O1级别的优化之外,同时还进行一些额外的调整工作,如处理指令调度等...
Stricto sensu,GCC编译器的中端由优化遍历的序列(实际上是嵌套树,在编译过程中会动态更改)组成,因此...
循环优化(Loop Optimization):改变循环结构,减少循环次数或提前退出循环,优化循环执行效率。 寄存器分配(Register Allocation):将变量存储在寄存器中,减少对内存的访问开销。 gcc提供了从 O0-O3 以及 Os 这几种不同的优化级别,在这些选项中,包含了大部分有效的编译优化选项,并且可以在这个基础上,对某些选项进行屏蔽或...
GCC 在开启 -O2 编译优化后,会遇到编译器领域的两个著名问题:严格别名(Strict Aliasing)与整数环绕(Integer Wrap-around)。 本次笔者就为大家详细讲解下这两个经典的编译优化问题。由于作者水平有限,本文不免存在遗漏或错误之处,欢迎指正交流。 1、什么是别名(alias) ...
事实上gcc的所有级别的优化(-O, -O2, -O3等)都会打开-fomit-frame-pointer,该选项的功能是函数调用时不保存frame指针,在ARM上就是fp,故我们无法按照APCS中的约定来回溯调用栈。但是GDB中仍然可以使用bt命令看到调用栈,为什么?得知GDB v6之后都是支持DWARF2的,也就意味着它可以不依赖fp来回溯调用栈(详见http:/...
要在Linux 下使用 GCC 编译器并启用优化选项,只需在命令行中添加相应的优化选项即可。例如,要使用 -O2 优化级别编译一个名为 main.c 的C 语言源文件,可以使用以下命令: gcc -O2 main.c -o main 复制代码 这将生成一个名为 main 的可执行文件,其中包含经过 -O2 优化级别优化后的代码。 0 赞 0 踩最新...