4. -Os 这个优化标识和-O3有异曲同工之妙,当然两者的目标不一样,-O3的目标是宁愿增加目标代码的大小,也要拼命的提高运行速度,但是这个选项是在-O2的基础之上,尽量的降低目标代码的大小,这对于存储容量很小的设备来说非常重要。 为了降低目标代码大小,会禁用下列优化选项,一般就是压缩内存中的对齐空白(alignment ...
在研究编译驱动的makefile的时候,发现GCC的命令行里面有一个-Os的优化选项。 遍查GCC文档,发现了-O0, -O1, -O2, -O3,就是没有发现-Os。 祭出GOOGLE***搜了一下,终于发现这篇文章说明了-Os的作用: http://www.linuxjournal.com/article/7269 原来-Os相当于-O2.5。是使用了所有-O2的优化选项,但又不缩...
Release模式:-O3 -DNDEBUG Debug模式:-g MinSizeRel模式:-Os -DNDEBUG RelWithDebInfo模式:-O2 -g -DNDEBUG 我们可以在 CMakeLists 中使用如下片段添加额外的编译选项: # 修改编译选项if("${CMAKE_CXX_COMPILER_ID}"STREQUAL"GNU")# debug 默认选项...
-O2,高度优化。(在 -O1 的基础上,尝试更多的寄存器级的优化以及指令级的优化)(调试信息不友好,有可能会修改代码和函数调用执行流程,自动对函数进行内联)。 -Os,相当于 -O2.5。使用了所有 -O2 的优化选项,但又不缩减代码尺寸的方法。 转载:gcc -O0 -O1 -O2 -O3 -Os 编译优化等级 使用参考:gcc -O0 -...
-O3 尝试非常优化代码以提高性能。它包括所有优化 -O2 包括,以及更多。 另一方面,-Os 指示 GCC “优化大小”。它启用所有 不会增加可执行文件大小的-O2 优化,然后它还切换一些优化标志以进一步减小可执行文件大小。 请注意,我的描述故意含糊不清 - 阅读 GCC 文档以更深入地讨论究竟为任一优化级别启用了哪些标志...
-O3 优化速度,而 -Os 优化空间。这意味着 -O3 会给你一个快速的可执行文件,但它可能会相当大,而 -Os 会给你一个较小的可执行文件,但它可能会更慢。 空间和时间效率通常是一种权衡。更快的算法往往会占用更多空间,而就地算法(不增加空间使用的算法)往往效率较低。 通常现代计算机有足够的内存空间,所以 -...
Os: 优化性能同时不增加可执行文件大小。包含O2选项中不增加代码大小的优化项 Og: 优化性能同时不损害可调试性。包含O1选项中不损害可调试性的优化项 Ofast: 忽视严格的标准编译性。包含O3中所有选项及` -ffast-math` O1优化项 代码语言:txt 复制 -fauto-inc-dec ...
4 -Os 这是专门用于优化代码大小的优化级别,执行-O2所有优化选项,排除那些可能导致程序大小增加的优化选项。 5 -O3 最高优化等级。该优化级别较高,执行的优化不会很直观,所以可能也会出现一些问题,需要看实际情况选择是否需要使用-O3。 在笔者以往的开发中,在使用-O3优化级别时,小概率出现代码执行一段时间后出现...
在研究编译驱动的makefile的时候,发现GCC的命令行里面有一个-Os的优化选项。 遍查GCC文档,发现了-O0, -O1, -O2, -O3,就是没有发现-Os。 祭出GOOGLE***搜了一下,终于发现这篇文章说明了-Os的作用: http://www.linuxjournal.com/article/7269
描述:进一步优化,但不执行循环展开和函数内联。以空间换取性能,即在空间允许的情况下,通过优化提高代码的执行速度。优化效果:生成的代码性能较好,编译时间相对增加,但仍在可接受范围内。O3:描述:执行更多优化,如内联函数、循环展开和更复杂的代码分析。适用于对性能要求极高的场景。优化效果:生成...