C 程序性能优化

      一段c程序,功能开发完成,开始性能优化。
       当然是先用 -pg 编译,再gprof看“热点”在哪里,很快找到,是计算hash值的函数,于是换了个更快的hash函数——fnv (
http://isthe.com /chongo/tech/comp/fnv/),速度提高了一些。接着把该hash函数内联(inline),程序又快了一些。内联函数不是解决性能问题的灵丹妙药,因为inline之后gprof就看不到该函数的调用情况,也就不好找真正的性能瓶颈了。

      接着把几个常用循环中的变量声明为register,即优先使用寄存器,嗯,有点效果,但不是很明显。管它的,快一点是一点。

      最后把代码部分优化完,改编译参数了:
      将 -O2 改为 -O3 ,跑了单元测试,没问题,性能好一点
      加 -march=nocona ,性能又好一点(因为开发的程序只在服务器上跑,而公司的服务器都装intel的CPU,而且都是新到货,基本都是nocona平台,所以加上没问题)
      加 -minline-all-stringops , 据说这个选项适合含有memset、memcpy语句较多的程序,这个正合我意,加上之后性能有好了一点.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值