根据以往的项目经验,开启编译器优化选项可能是立竿见影、成本最低、效果最好的方式了。 这么说可能还不够直观,举个真实的例子:我所参与的自动驾驶的项目中,无需修改任何代码,仅仅增加一个-O2选项,进程整体的 CPU loading 可以从 50% 降到 30% 左右,某些关键函数的执行时间可以从 1700us 降低到 700us 左右。
2.-O1,-O2,-O3为何方神圣,它们是如何优化编译文件的? (1)首先,她们的真面目是: -O1 提供基础级别的优化 -O2提供更加高级的代码优化,会占用更长的编译时间 -O3提供最高级的代码优化 可以使用-f命令行选项引用每个单独的优化技术。 1, 编译器优化级别1 在优化的第一个级别执行基础代码的优化 这个级别试图执...
-O1:启用基本的优化。这个选项适用于大多数情况,它会在编译时进行一些基本的优化,如函数参数的内联和循环展开等。 -O2:启用更多的优化。这个选项在-O1的基础上增加了更多的优化,如指令调度、循环展开、内存访问优化等。通常情况下,-O2能提供比-O1更好的性能。 -O3:启用最高的优化级别。这个选项包含了所有可用的...
此优化等级允许进行需要大量编译时分析和资源的优化。-O3指示编译器针对生成的代码的性能进行优化,而忽略生成的代码的大小,这可能会导致代码大小增加,比-O2生成的代码更大。但速度会比比-O2快 5.-Os:平衡的优化 目的是在不显着增加代码大小的情况下提供高性能,即速度的优化和代码大小的增加是合理的。根据你的应用...
gcc -O0 -O1 -O2 -O3 -Os 编译优化等级 GCC提供了大量优化等级,用来对编译时间、目标文件大小、执行效率三个维度进行不同的取舍和平衡 -O0,最少的优化。(这是默认的编译选项)(可以最大程度上配合产生代码调试信息,可以在任何代码行打断点,特别是死代码处)...
C++编译器优化选项因编译器而异,以下是一些常见的GCC和Clang编译器优化选项: -O0:无优化。不对代码进行优化,以便于调试。 -O1或-O:进行基本的优化,包括函数内联、循环展开等。 -O2:进一步优化代码,包括常量折叠、死代码消除等。 -O3:最高级别的优化,包括自动向量化、循环交换等。 -Ofast:类似于-O3,但可能会...
1 打开DEV C++程序,点击工具[T]-编译选项[C]。2 选中编译时加入以下命令复选框,并在下方的文本框内输入-O2。3 点击确定关闭对话框,再次编译程序的时候,O2优化就开启了!4 当然,大家也可以加入其它选项,比如-std=c++14来开启c++14标准,-Wall来开启所有警告等等。这和使用g++编译程序的时候后面的选项是一...
O2:是比O1更高级的选项,进行更多的优化。GCC将执行几乎所有的不包含时间和空间折中的优化。当设置O2选项时,编译器并不进行循环展开以及函数内联优化。与O1比较而言,O2优化增加了编译时间的基础上,提高了生成代码的执行效率。 O3:在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优...
-O2:进行更多的优化,通常能显著提高程序性能,是大多数项目的默认优化级别。 -O3:进行最高级别的优化,可能会增加编译时间,但通常能进一步提高程序性能。 -Os:专注于代码大小的优化。 -Ofast:GCC的额外优化级别,可能违反某些标准,但能提供更高的性能。
GCC 4.6.4以上版本,有**-O0、-O1、-O2、-O3、-Os、-Ofast、-Og**几个优化等级,参数 -O1、-O2、-O3 中,随着数字变大,代码的优化程度也越高,不过这在某种意义上来说,也是以牺牲程序的可调试性为代价的。 所有的优化选项如下: -faggressive-loop-optimizations -falign-functions[=n] ...