根据以往的项目经验,开启编译器优化选项可能是立竿见影、成本最低、效果最好的方式了。 这么说可能还不够直观,举个真实的例子:我所参与的自动驾驶的项目中,无需修改任何代码,仅仅增加一个-O2选项,进程整体的 CPU loading 可以从 50% 降到 30% 左右,某些关键函数的执行时间可以从 1700us 降低到 700us 左右。
C++编译器提供了多种优化选项,以提高程序的执行效率和减少资源消耗。以下是一些常见的优化选项及其具体作用和示例: 1. 基本优化级别 -O0:无优化。编译器不对代码进行优化,生成的代码与源代码几乎一一对应,便于调试。 -O1(或-O):进行基本的优化,包括函数内联、循环展开等。适用于大多数应用场景。 -O2:进一步优化...
O2:常用的发布优化选项,在O1的基础上额外打开了四十多个优化选项,包括自动内联等规则 Os:产生较小代码体积的优化选项(比O2更保守) O3:较为激进的优化选项(对错误编码容忍度最低),在O2的基础上额外打开了十多个优化选项 Ofast:打开可导致不符合IEEE浮点数等标准的性能优化选项。 具体介绍如下: O0 编译器默认就...
在C++中,可以通过在编译命令行中添加相应的编译器优化选项来设置优化级别。以下是一些常用的优化选项: -O1:添加基本的优化。 -O2:添加更多的优化,包括一些可能会增加代码大小的优化。 -O3:添加尽可能多的优化,包括一些可能会显著增加代码大小的优化。 -Ofast:尽可能快地编译代码,不执行任何数据流分析,可能会导致未...
在C++中,编译器提供了许多优化选项来提高程序的性能。以下是一些常用的编译器优化选项: -O1 (或 -O):启用基本的优化。这包括内联函数、循环展开、指令调度等。 -O2:在-O1的基础上增加更多的优化,如常量传播、死代码消除、循环向量化等。 -O3:在-O2的基础上增加更多的优化,如内联函数、循环展开、指令调度、...
-O2:启用更多的优化。这个选项在-O1的基础上增加了更多的优化,如指令调度、循环展开、内存访问优化等。通常情况下,-O2能提供比-O1更好的性能。 -O3:启用最高的优化级别。这个选项包含了所有可用的优化选项,包括内联函数、循环展开、指令调度、内存访问优化、指令选择等。然而,-O3可能会导致编译时间增加,并且在某些...
-Os使能-O2中除去会增加程序空间的所有优化参数。同时-Os还会执行更加优化程序空间的选项。 -Os会关闭以下优化选项: 关于GCC编译的优化选项一共有-O0(默认),-O1,-O2,-O3及-Os五个参数。 各个参数优选内容如上所示。 但是各个优化内容到底是指什么那?继续分析。
优化选项三:O2(中级优化) 这个选项就像给你的赛车装了个大涡轮,编译器会进行更深入的优化,比如指令重排、循环展开等。这就像赛车手在赛道上全速前进,性能大幅提升。这种优化可能会改变代码的结构,在使用前要让你的程序稳定。 优化选项四:O3(高级优化)
对于不同的优化级别开启的对应优化开关可以通过gcc -Q -O2 --help=optimizers来查看对应的开启优化列表。 1. GCC优化选项 -O0默认的优化选项,减少编译时间和生成完整的调试信息。 -O/-O1这两个都是开启level 1的编译优化。开启编译优化会导致更长的编译时间,对于大函数还会消耗更多的内存空间。level1的编译优化...
O2: 显著提升编译时间,提升代码性能,做不包含`space-speed tradeoff`的所有优化 O3: 进一步优化,显著增加可执行文件大小。 Os: 优化性能同时不增加可执行文件大小。包含O2选项中不增加代码大小的优化项 Og: 优化性能同时不损害可调试性。包含O1选项中不损害可调试性的优化项 ...