gcc优化选项解析
1 -fno-defer-pop
函数返回的时候,就立即将栈里面放置的该函数的参数pop出来。这样可以避免函数参数占用过多的栈空间。
2 -fforward-propagate
?
3 -ffp-contract=style
floating point expression contract,这个是FMA,fused multipy add
用于计算x*y + z,其中x、y、z都是浮点数。有的处理器实现了fma指令。
c99里面通过提供fma函数来支持fma。
fma的特点是可以使得这种模式的浮点计算更快精度更高。
普通的x*y + z用了两次rounding,第一次在计算x*y之后,会进行rounding,然后在和z相加,得到的结果再一次rounding。而使用fma计算的话,只会rounding一次,因此精度更高。
4 -fomit-frame-pointer
不要frame pointer,这样就可以减少每个函数保存frame pointer和恢复frame pointer的指令,加快程序的执行,毕竟这些指令都是要访问内存的。
但是,backtrace就用不了了。
5 -foptimize-sibling-calls
这个选项会对sibling call,tail recursive call进行优化。首先,直接用jmp指令而不用call指令,这样的话,被掉用函数执行完后,不需要再跳回调用函数。其次,被调用函数直接用调用函数的栈,这样可以有效的节省内存空间,并且可以防止出现栈溢出。因为由于是sibling call,是调用函数执行的最后一条指令,并且栈空间足够大,留着原来的栈空间是没有用的,返回更是没有意义的,因此可以这样进行优化,但是问题是,如果f调用b,现在断在b中,想要去查看f的局部变量就查看不了了。
6 -foptimize-strlen
就是对c里面的字符串处理函数strlen、strcpy等进行优化,使之执行的速度更快。
gcc优化选项解析的更多相关文章
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级
http://hi.baidu.com/xiaole10368/item/7cea9b1369cc240db88a1a5c 少优化->多优化: O0 -->> O1 -->&g ...
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
英文:https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Optimize-Options.html#Optimize-Options 少优化->多优化: ...
- GCC优化选项-fomit-frame-pointer对于esp和ebp优化的作用
我的博客:www.while0.com -fomit-frame-pointer选项是发布产品时经常会用到的优化选项,它可以优化汇编函数中用edp协助获取堆栈中函数参数的部分,不使用edp,而是通过计 ...
- GCC 优化选项 -O1 -O2 -O3 -OS 优先级,-FOMIT-FRAME-POINTER(O3的优化很小,只增加了几条优化而已)
四种编译优化类型的解释: `-O ' `-O1 ' Optimize. Optimizing compilation takes somewhat ...
- gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化【转】
转自:http://blog.csdn.net/qinrenzhi/article/details/78334677 相关博客http://blog.chinaunix.net/uid-2495495 ...
- gcc options选项的优化及选择
gcc options选项的优化 -c和-o都是gcc编译器的可选参数[options] -c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件,一般是.o文件.[只 ...
- gcc/g++ -O 优化选项说明
查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. 除了-O0以外,每一 ...
- gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
参考链接 : http://blog.csdn.net/qq_31108501/article/details/51842166 gcc -D选项的作用,声明宏 参考链接: http://blog. ...
- gcc 编译 + 选项【转】
转自:http://blog.csdn.net/princess9/article/details/6567678 一般来说要现有项目中的编译选项,设置新的project的编译选项 编译器 就是将“高 ...
随机推荐
- SQL SERVER系统表和常用函数介绍
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项s ...
- 牛客网 nowcoder TG test-172
# solution-nowcoder-172 # A-中位数 $30\%:n\le 200$ 直接枚举 $n-len+1$ 个区间,将这段里的数重新排序直接找到中位数 $60\%:n\le 2000 ...
- tcp案例之文件下载器
文件下载器客户端 import socket def main(): # 1.创建一个tcp socket tcp_client_socket=socket.socket(socket.AF_INET ...
- centos6 磁盘与文件系统管理
一.磁盘管理 磁盘构成 1.圆形磁盘 2.磁盘读取头 3.机械手臂 4.主轴马达 运作原理 数据存储在具有磁性物质的圆形磁盘上,读写操作主要是通过机械手臂上的磁盘读取头来达成,实际运作时,主轴马达让磁 ...
- assert.notDeepStrictEqual()详解
assert.notDeepStrictEqual(actual, expected[, message]) 深度地严格不相等比较测试,与 assert.deepStrictEqual() 相反. c ...
- 最详细的JavaWeb开发基础之java环境搭建(Mac版)
阅读文本大概需要 5 分钟. 我之前分享过在 Windows 下面配置 Java 环境,这次给大家带来的是 Mac 下面安装配置 Java 环境.首先 Mac 系统已经带有默认的 Java,但是由于使 ...
- java发送短信验证码的功能实现
总结一下发送短信验证码的功能实现 (题外话:LZ是在腾讯云买的第三方(山东鼎信)短信服务平台的接口,1块钱20次的套餐来练手,哈哈,给他们打个广告,有需要的可以去购买哈,下面是购买链接短信服务平台购买 ...
- BNUOJ 26223 CosmoCraft
CosmoCraft Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: ...
- 九度oj 题目1047:素数判定
题目1047:素数判定 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:12466 解决:5644 题目描述: 给定一个数n,要求判断其是否为素数(0,1,负数都是非素数). 输入: 测试数 ...
- uva1366/LA3530
简单的矩阵上的dp 从左上角扫到右下角,dp[i][j][0] 代表在i,j处选A ,dp[i][j][1] 代表在i,j处选B. dp[i][j][0]=max(dp[i-1][j][1],dp[i ...