登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

西部软件部落

程序人生,路漫漫其修远兮

 
 
 

日志

 
 
关于我

擅长Linux C,Shell,GTK,Oracle技术,熟悉支付网关,POSP收单领域。喜欢开源。注:本站原创文章欢迎转载,转载时请注明出处。

(原创)优化你的GCC  

2007-11-11 21:14:48|  分类: 软件开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

GCC具有优化代码的功能,代码的优化是一项比较复杂的工作,它可归为:源代码级优化、速度与空间的权衡、执行代码的调度。但一般调试的时候推荐不使用优化,而是在你的程序的功能模块完成后,因为代码经过优化后,原先在源码程序中声明和使用的变量很可能不再使用,控制流也可能会突然跳转到意外的地方,循环语句也有可能因为循环展开而变得到处都有,所以这些都将使调试工作异常艰难。所以如果将要将众多模块整合成一个完整的软件的时候,可以考虑优化一下你的GCC,使得你的软件运行更快。

GCC提供了下列优化选项:
-O0 : 默认不优化(若要生成调试信息,最好不优化)
-O1 : 简单优化,不进行速度与空间的权衡优化;
-O2 : 进一步的优化,包括了调度。(若要优化,该选项最适合,它是GNU发布软件的默认优化级别;
-O3 : 最高优化;
-funroll-loops : 展开循环,会使可执行文件增大,而速度是否增加取决于特定环境;
-Os : 生成最小执行文件;
一般来说,调试时不优化,一般的优化选项用-O2(gcc允许-g与-O2联用,这也是GNU软件包发布的默认选项),embedded可以考虑-Os。

下面来看看example:

int main()

{

    int count;

    int start;

    int end;

    for(count = 0 ;count < (1000000000 + 7530)/18;count = count +7)

    {

         start = (count + 7530)/18;      /*test code: you can add difficulty operation  */

          end = count; 

     }

    printf("%7d%7d",start,end);

    return 0;

}

gcc -o test   test.c

看你的程序运行时间

$  time ./test

然后你看看使用下列方法:

gcc -o test test.c -lm -o1

在去看看你的程序运行时间

$ time ./test
再用-o2,o3,相互试试。。。

出来的时间可以明显的比对相互的差异,当然了,这些值随着机器的配置不一样,运行结果也不一样。


time测量指定程序的执行时间,结果由三部分组成:
real : 进程总的执行时间, 它和系统负载有关(包括了进程调度,切换的时间)
user: 被测量进程中用户指令的执行时间
sys : 被测量进程中内核代用户指令执行的时间

user和sys的和被称为CPU时间.

 

  评论这张
 
阅读(2550)| 评论(3)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018