人工优化,不仅会降低代码的可读性和可维护性,而且非常容易引入 bug! 实际上,不管是-O2还是-O3,都是一组优化选项的集合,要知道具体做了什么,可以通过 gcc/g++ 的-c -Q --help=optimizers参数 例如我用的 aarch64-unknown-nto-qnx7.1.0-g++ 编译器,如果想知道加了-O2之后开启了哪些优化项,
-O3指示编译器针对生成的代码的性能进行优化,而忽略生成的代码的大小,这可能会导致代码大小增加,比-O2生成的代码更大。但速度会比比-O2快 5.-Os:平衡的优化 目的是在不显着增加代码大小的情况下提供高性能,即速度的优化和代码大小的增加是合理的。根据你的应用程序,提供的性能可能类似于 -O2或-O3。 6.-Oz:...
GCC优化级别有-O0、-O1、-O2、-O3、-Og、-Os、-Ofast 总结如下: 优化级别说明备注 -O0 关闭所有优化 代码空间大,执行效率低 -O1 基本优化等级 编译器在不花费太多编译时间基础上,试图生成更快、更小的代码 -O2 O1的升级版,推荐的优化级别 编译器试图提高代码性能,而不会增大体积和占用太多编译时间 -O3 ...
-Ofast:这个编译器优化选项启用所有 -O3 级别的优化,并进一步启用一些可能会破坏标准精度的优化,如忽视 IEEE 或 ISO 规定的某些数学准则的优化。这可能会使得程序运行得更快,但也可能会降低精度,因此只有在你可以接受这种精度损失的情况下才应使用。 -O3:这是一个编译器优化选项。这个标志告诉编译器使用所有的优化...
-O3:启用最高的优化级别。这个选项包含了所有可用的优化选项,包括内联函数、循环展开、指令调度、内存访问优化、指令选择等。然而,-O3可能会导致编译时间增加,并且在某些情况下可能会降低程序的稳定性。因此,在使用-O3之前,请确保充分测试你的程序。 -Ofast:启用最快的优化。这个选项会尽可能地提高程序的执行速度,但...
-O3:最高级别的优化,包括自动向量化、循环交换等。 -Ofast:类似于-O3,但可能会牺牲一些精度和安全性,例如忽略浮点数NaN值。 -Os:优化代码大小,通过减少指令数量和内存使用来减小生成的二进制文件大小。 -funroll-loops:循环展开,尝试将循环体复制多次以减少循环次数。 -fno-inline:禁用函数内联。 -finline-function...
其中-O3/-O2是为了开启向量化优化,这是向量化数学库起效的前提。 示例 test.c: #include <km.h> #include <stdio.h> #include <stdlib.h> int main() { long loop = 1e7; int len = 8192; float *a = (float*)malloc(sizeof(float) * len); float *b = (float*)malloc(sizeof(float) * ...
百度试题 题目编译器的优化器选项有四个不同的优化级别,分别对应选项-o0、-o1、-o2和-o3,其中___是默认的优化级别。相关知识点: 试题来源: 解析 -o2 反馈 收藏
-O3 提供最高级的代码优化 -O4 不优化,这是默认值 第一级:代码调整 代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题; 所以:语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级;这个级别试图执行9种单独的优化功能: ...