程序速度优化案例分析.ppt
《程序速度优化案例分析.ppt》由会员分享,可在线阅读,更多相关《程序速度优化案例分析.ppt(31页珍藏版)》请在第壹文秘上搜索。
1、程序速度优化案例分析程序速度优化案例分析软件DSC简介n凸阵式扇形扫查的回波信号是极坐标形式的。图示出这种极坐标形式的采样点与光栅扫描显示像素间的位置关系。软件DSC简介n 对于每一个象素点,需要找到与其相邻的四个采样点进行线性插值,得到该点灰度值。软件DSC简介ar1r2x1x4x6x2x3x5x7xyo DSC要解决的两个主要问题是:坐标变换及插补处理。首先要将屏幕上每个象素点(DisX,DisY)转化为以探头圆心为原点的直角坐标系中的坐标(X, Y),再将(X,Y)转换为极坐标(R,),然后求得对应扫描线线号(Col,Row)。 提高代码执行效率的准备工作 n建立起时间测试框架 n以递增
2、方式做测试 n打开编译器的优化选项 打开编译器的优化选项n为了便于调试,编译器在Debug下一般对代码不作或只作很少的优化,所以依据Debug版的测试结果来作为效率改进的依据有时可能意义并不大,编译器可能已经作了你想作的优化。软件DSC速度改进过程n单B图像(35c50ha探头,深度5.17),速度大约为13.7帧/秒,显然不具备实时性。(测试所用机器配置如下:cpu: 奔腾四2.8G,L1 data cache 8K Bytes,L2 cache 512K Bytes。 )95以上时间花费在此UConvexDSC:DSC() for(DisY=0;DisYm_usDisplayHeight;
3、DisY+) 将DisY变为以探头圆心为原点的坐标Y for(DisX=0;DisXm_usDisplayWidth;DisX+) 将DisX变为以探头圆心为原点的坐标X 计算线号Col,行号Row If(点不在扫描线以内) 灰度值设为0; continue; 根据插值系数和线号、行号、插值系数求该点象素值 n对于屏幕上每个象素点来说,对于给定探头,如果深度、放大系数、偏移系数固定,每个点对应极坐标位置和插值系数是固定的。如果将第一次的计算结果存储到表格中,以后计算时不需要重新计算每个点的坐标位置和插值系数,而使用表格中存储的数据,直接进行插值运算。 不需要每帧都进行计算以空间效率换取时间效率
4、 n经过这一步优化,耗时从72ms减少到8.8ms,达到113.9帧/秒。 循环内判断应当移到循环外部将循环体的逻辑判断移到循环体外n通过这一修改,耗时从8.8ms减少到5.5ms,达到180.8帧/秒。 存在冗余计算存在冗余计算循环体内工作量最小化,减少冗余的操作 n这一步改进使得耗时从5.5ms减少3.6ms,达到274帧/秒。 for(DisY=0;DisYm_usDisplayHeight;DisY+) 将DisY变为以探头圆心为原点的坐标Y for(DisX=0;DisXm_usDisplayWidth;DisX+) 将DisX变为以探头圆心为原点的坐标X 从表格中获取Col值 If
5、(点不在扫描线以内) 灰度值设为0; continue; 从表格中获取Row,insert0,insert1,insert2,insert3值 根据插值系数和线号、行号、插值系数求该点象素值 CPU的cache对性能的影响 内存CPU芯片L1高高速速缓缓存存(SRAM)寄存器堆ALU总线接口L2高高速速缓缓存存(SRAM)高速缓存总线I/O桥存储器总线系统总线 位于CPU芯片上的L1高速缓存的访问速度几乎和访问寄存器堆一样快,CPU可以在一个时钟周期内访问它们。L2高速缓存是通过一条特殊的总线连接到处理器的,访问L2的时间开销要比访问L1大5倍。而通常CPU需要几十或几百个时钟周期才能访问到内
6、存。 存储器层次结构 寄存器L1高速缓存(SRAM)L2高速缓存(SRAM)主存储器(DRAM)L0L1L2L3本地二级存储(本地磁盘)远程二级存储(分布式文件系统、Web服务器)L4L5 分层结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。 存储器层次结构中的基本缓存原理 431494765032181110912151413第K层:第K1层:数据以块为大小为传输单元在层与层之间拷贝 L0和L1层之间传送通常使用1个字的块,L1和L2之间以及L2和L3之间的传送通常使用48个字的块。 局部性原理 n时间局部性 在一个具有良好时间局部性的程
7、序中,被引用过一次的变量很可能在不远的将来再多次被引用(重复引用一个变量)。 n空间局部性 在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。 局部性原理对速度的影响for(disy = 0; disy m_usDisplayHeight; disy+) for(disx = 0; disx m_usDisplayWidth; disx+) 访问Insert0disydisx for(disx = 0; disx m_usDisplayWidth; disx+) for(disy = 0; disy m_usDisplayHe
8、ight; disy+) 访问Insert0disydisx 测得软件DSC耗时增大了5.07ms,速度为98.0帧/秒,速度降低65%! 局部性原理对速度的影响C语言以行优先顺序存储数组,二维数组在内存中存放顺序如下: 如果高速缓存和内存之间传送数据块大小是4个字,则原来的代码缓存命中率为75%,而调整后的代码缓存命中率为0。Cpu每次读数据时都必须到内存中去读,导致效率大幅度降低。.00010N.10111N.M0M1MN数据存储方式对效率的影响int PixelRow_IIMG_HEIGHTIMG_WIDTH;int PixelCol_IIMG_HEIGHTIMG_WIDTH;int I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 速度 优化 案例 分析