c程序性能优化
发布日期:2021-06-30 19:20:16 浏览次数:3 分类:技术文章

本文共 537 字,大约阅读时间需要 1 分钟。

 

一段c程序,功能开发完成,开始性能优化。
       当然是先用 -pg 编译,再gprof看“热点”在哪里,很快找到,是计算hash值的函数,于是换了个更快的hash函数——fnv (),速度提高了一些。接着把该hash函数内联(inline),程序又快了一些。内联函数不是解决性能问题的灵丹妙药,因为inline之后gprof就看不到该函数的调用情况,也就不好找真正的性能瓶颈了。
      接着把几个常用循环中的变量声明为register,即优先使用寄存器,嗯,有点效果,但不是很明显。管它的,快一点是一点。
      最后把代码部分优化完,改编译参数了:
      将 -O2 改为 -O3 ,跑了单元测试,没问题,性能好一点
      加 -march=nocona ,性能又好一点(因为开发的程序只在服务器上跑,而公司的服务器都装intel的CPU,而且都是新到货,基本都是nocona平台,所以加上没问题)
      加 -minline-all-stringops , 据说这个选项适合含有memset、memcpy语句较多的程序,这个正合我意,加上之后性能有好了一点
      全部优化完了,查询400万的数据,从原先的4.9秒变为4.1秒,16%左右的性能提升,虽然不卓著,但性能就是钱啊,省钱是多么快乐的事啊....
转自:

转载地址:https://linuxstyle.blog.csdn.net/article/details/4183105 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:保持dropdownlist选中值
下一篇:.net 实现 URL重写,伪静态

发表评论

最新留言

很好
[***.229.124.182]2024年04月16日 06时54分25秒