ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
                          gcc优化标志
选项                  作用
-ffloat-store         禁止在CPU的寄存器中保存浮点变量的值.这能把CPU寄存器节省下来留作它用,而且可以防止产生过分精确但不必要的浮点数.
-ffast-math           产生浮点数学优化,这能提高速度但违反了IEEE或ANSI/ISO标准.如果程序不需要严格遵守IEEE规范,可在编译浮点密集型的程序时考虑采用这一标志
-finline-functions    把所有的"简单"函数在调用它们的函数中就地展开.编译器决定了什么是"简单"函数.减少处理器与函数相关的开销是一种基本的优化技术
-funroll-loops        展开所有能在编译时确定重复次数的循环体.展开循环体后每步循环都能省出几条CPU指令,这样大大减少了执行时间
-fomit-frame-pointer  如果函数不需要则丢掉指针,该指针保存在CPU的一个寄存器中.因为去掉了设置,保存和恢复帧指针所必需的指令,所以加快了处理速度.
-fschedule-insns      记录可能暂停的指令,因为它们正在等候的数据不在CPU中
-fschedule-insns2     执行第二次指令重排序(类似于-fschedule-insns)
-fmove-all-movables   把所有出现在循环体内部但稳定不变的计算移出循环体.这从循环体中去除了不必要的操作,加快了循环的整体运算速度.

内联和循环展开技术都能够大大提高程序的执行速度,因为它们都避免了函数调用和变量查找的开销,但付出的代价往往是大大增加了目标或二进制代码的大小.

一般而言,Linux程序员似乎爱用优化选项-O2.
posted on 2005-08-04 21:57 ivaneeo 阅读(1496) 评论(0)  编辑  收藏 所属分类: gcc小试牛力

只有注册用户登录后才能发表评论。


网站导航: