漫漫技术人生路

C#

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

当我们试图去调试软件的性能时,要从什么出发点来考虑呢?

其实通常软件的优化分为三个层次的方法:系统层面,应用层面及微架构层面。

1.首先需要考虑的是系统层面:是否有其他的程序较多的消耗着系统的资源;有无I/O的瓶颈问题;频繁的磁盘读写及响应;网络的速度;系统的配置(增加内存及选用高性能处理器,缓存)。可用Intel(R) VTune(TM) Performance Analyzer中Counter Monitor来收集此类信息。

2.其次考虑应用层面的优化:是否可以改进程序的算法,例如把单线程的程序修改成多线程的程序,在多核或超线程平台上获得性能的提升。Intel(R) Thread Checker可以帮你解决线程的出错定位, Intel(R) Thread Profiler 可以帮你解决线程的性能瓶颈。

3.再次考虑的是微架构层面的优化:比如程序中分支的跳转(误测)引起的指令缓存的命中率下降,程序中地址分配不当引起数据缓存的命中率下降,流水线上相邻指令对同一变量存取依赖,双核上对共享的L1缓存行刷新影响正在使用该缓存另一核,等等。

posted on 2008-10-15 18:15  javaca88  阅读(161)  评论(0编辑  收藏  举报