没有绝对意义上的“更好”,只有根据具体情况和需求来选择。如果追求极致性能则使用-O3; 如果需要较小而足够快的可执行文件,则使用-Os. 内容由零声教学AI助手提供,问题来源于学员提问
使用-O3 进行编译并不能保证提高性能,事实上,在许多情况下,由于二进制文件较大和内存使用量增加,可能会降低系统速度。 -O3 也可以破坏多个包裹。因此,不建议使用 -O3。 根据那篇文章,在大多数情况下,-O2 与 -O3 一样“好”,并且就损坏的可执行输出而言,使用起来更安全。 原文由 CmdrMoozy 发布,翻译遵循 C...
-O3 优化速度,而 -Os 优化空间。这意味着 -O3 会给你一个快速的可执行文件,但它可能会相当大,而 -Os 会给你一个较小的可执行文件,但它可能会更慢。 空间和时间效率通常是一种权衡。更快的算法往往会占用更多空间,而就地算法(不增加空间使用的算法)往往效率较低。 通常现代计算机有足够的内存空间,所以 -O...
Release模式:-O3 -DNDEBUG Debug模式:-g MinSizeRel模式:-Os -DNDEBUG RelWithDebInfo模式:-O2 -g -DNDEBUG 我们可以在 CMakeLists 中使用如下片段添加额外的编译选项: # 修改编译选项if("${CMAKE_CXX_COMPILER_ID}"STREQUAL"GNU")# debug 默认选项...
优化等级 -O1 -O2 -O3 -Os -Ofast -Og 一下内容摘自 Using the GNU Compiler Collection (GCC) 一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的 p命令查看变量的值,改变变量的值等。并且把获取最快的编译速度作为它的目标。
级的优化。使用-Os 是不推荐的。 ◼ -O3: 打开所有 -O2 的优化选项并且增加 -finline-functions, -funswitch-loops,- fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize 优化选项。这是最高最危险 的优化等级。用这个选项会延长编译代码的时间,并且在使用 gcc4.x 的系统里不应全局 ...
gcc 中-O -O1 -O2 -O3 -Os -Ofast -Og优化的原理,一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断
O3: 进一步优化,显著增加可执行文件大小。 Os: 优化性能同时不增加可执行文件大小。包含O2选项中不增加代码大小的优化项 Og: 优化性能同时不损害可调试性。包含O1选项中不损害可调试性的优化项 Ofast: 忽视严格的标准编译性。包含O3中所有选项及` -ffast-math` ...
描述:进一步优化,但不执行循环展开和函数内联。以空间换取性能,即在空间允许的情况下,通过优化提高代码的执行速度。优化效果:生成的代码性能较好,编译时间相对增加,但仍在可接受范围内。O3:描述:执行更多优化,如内联函数、循环展开和更复杂的代码分析。适用于对性能要求极高的场景。优化效果:生成...
在研究编译驱动的makefile的时候,发现GCC的命令行里面有一个-Os的优化选项。 遍查GCC文档,发现了-O0, -O1, -O2, -O3,就是没有发现-Os。 祭出GOOGLE***搜了一下,终于发现这篇文章说明了-Os的作用: http://www.linuxjournal.com/article/7269