编译器优化

-O0 -O1 -O2 -O3 -Os -Ofast -Og 编译选项优化差异:

GCC官网

GCC, the GNU Compiler Collection- GNU Project

找到对应的GCC版本,

 

 

可查看不同优化等级编译选项的差异

局部禁用优化:

函数禁用优化

为函数设置__attribute__((optimize(“O0”)))属性

#include <stdio.h>

void __attribute__((optimize("O0"))) blabla(void) {
}

int main(void) {
    blabla();
    return 0;
}

代码段禁用优化

gcc

#pragma GCC push_options
#pragma GCC optimize ("O0") 
// your code
#pragma GCC pop_options

vs

#pragma optimize("", off)
// your code
#pragma optimize("", on)

clang

#pragma clang optimize off
// your code
#pragma clang optimize on

变量禁用优化

使用volatile关键字

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Makefile可以用于优化编译器的参数和选项,以提高代码的执行效率和性能。通过在Makefile中设置编译器优化选项,可以让编译器在编译代码时进行一些优化,以生成更高效的机器代码。 以下是一些常用的编译器优化选项: 1. -O0:关闭所有优化选项,生成未优化的代码。 2. -O1:启用基本优化选项,包括删除未使用的代码和常量折叠。 3. -O2:启用更多的优化选项,包括循环展开和内联函数。 4. -O3:启用更高级的优化选项,包括向量化和函数内部优化。 5. -Os:优化代码大小,以减小生成的可执行文件的大小。 6. -Ofast:启用所有的优化选项,包括一些可能会影响代码正确性的选项。 在Makefile中,可以使用变量来设置编译器优化选项。例如,可以使用`CFLAGS`变量来设置C语言编译器的选项,使用`CXXFLAGS`变量来设置C++语言编译器的选项。下面是一个示例: ```makefile CFLAGS = -O2 -Wall CXXFLAGS = -O3 -std=c++11 target: source.c gcc $(CFLAGS) -o target source.c target_cpp: source.cpp g++ $(CXXFLAGS) -o target_cpp source.cpp ``` 在上面的示例中,`CFLAGS`变量设置了C语言编译器优化选项为`-O2 -Wall`,`CXXFLAGS`变量设置了C++语言编译器优化选项为`-O3 -std=c++11`。然后,在编译目标文件时,使用相应的变量来传递编译器选项。 通过在Makefile中设置编译器优化选项,可以根据具体的需求来优化代码的执行效率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值