代码优化的几点总结

来源:互联网 发布:双色球幻圆图算法 编辑:程序博客网 时间:2024/05/06 04:23

 做代码优化有一定时间了,回头看其中走了不少弯路,今天有空做个小结,以加深自己的理解,欢迎建议。

 

代码优化的几个步骤:

1,测量工具

     引起性能问题的因素很多,从大方面着手。应用程序的时间开销可以分成三种(借用《高质量程序设计艺术》里的分类):CPU时间(r),系统时间(s),用户时间(u)。通常大家关注的是u,可是有些应用程序的瓶颈在其它方面,比如磁盘或者网络,系统调用等。所以首先应该使用恰当的工具进行测量和定位,以排除磁盘IO、网络吞吐、系统调用的影响。

 

2,程序profiler

    定位到是用户时间瓶颈后,首先对程序进行总体剖析。代码的耗时通常符合2-8原则,即20%的代码占了80%的时间开销。profiler工具可以快速找到那20%的代码,如果觉得20%的代码还是较多,可以选择耗时最大的10%、5%的代码,总之,优化一定要从投入产出最大的地方出手。要注意,单个函数耗时小,不一定代表它在整个程序中耗时少。

 

3,算法分析

     对剖析后得到的瓶颈代码的进行算法复杂度分析,优化考虑从算法和数据结构上进行优化。

 

4,代码优化

     代码优化有许多优化方法:提取循环内与循环变量无关代码、查找表、降低循环层次、提高最内层循环迭代次数等等。

 

几个小建议:

1,提高带宽比降低延迟要容易。个人认为这也许是现在提倡并行编程的一个原因吧,CPU频率的提高已经穷途末路了,要提高性能,还可以提高指令吞吐率。

2,函数调用的开销差别很大,注意对非进程自身地址空间的访问

3,不好不要使用汇编优化,汇编代码本质上是不可移植的

4,采用阻塞方式,不要让CPU时间在那里等待某个状态

5,关注内存的使用,包括局部性和内存大小,特别是局部性,充分利用高速缓存

6,减少中断

原创粉丝点击