欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

    程序速度优化案例分析.ppt

    • 资源ID:259540       资源大小:639.50KB        全文页数:31页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    程序速度优化案例分析.ppt

    程序速度优化案例分析,软件DSC简介,凸阵式扇形扫查的回波信号是极坐标形式的。图示出这种极坐标形式的采样点与光栅扫描显示像素间的位置关系。,软件DSC简介,对于每一个象素点,需要找到与其相邻的四个采样点进行线性插值,得到该点灰度值。,软件DSC简介,DSC要解决的两个主要问题是:坐标变换及插补处理。首先要将屏幕上每个象素点(DisX,DisY)转化为以探头圆心为原点的直角坐标系中的坐标(X,Y),再将(X,Y)转换为极坐标(R,),然后求得对应扫描线线号(Col,Row)。,提高代码执行效率的准备工作,建立起时间测试框架 以递增方式做测试 打开编译器的优化选项,打开编译器的优化选项,为了便于调试,编译器在Debug下一般对代码不作或只作很少的优化,所以依据Debug版的测试结果来作为效率改进的依据有时可能意义并不大,编译器可能已经作了你想作的优化。,软件DSC速度改进过程,单B图像(35c50ha探头,深度5.17),速度大约为13.7帧/秒,显然不具备实时性。(测试所用机器配置如下:cpu:奔腾四2.8G,L1 data cache 8K Bytes,L2 cache 512K Bytes。),95以上时间花费在此,UConvexDSC:DSC(),对于屏幕上每个象素点来说,对于给定探头,如果深度、放大系数、偏移系数固定,每个点对应极坐标位置和插值系数是固定的。如果将第一次的计算结果存储到表格中,以后计算时不需要重新计算每个点的坐标位置和插值系数,而使用表格中存储的数据,直接进行插值运算。,不需要每帧都进行计算,以空间效率换取时间效率,经过这一步优化,耗时从72ms减少到8.8ms,达到113.9帧/秒。,循环内判断应当移到循环外部,将循环体的逻辑判断移到循环体外,通过这一修改,耗时从8.8ms减少到5.5ms,达到180.8帧/秒。,存在冗余计算,存在冗余计算,循环体内工作量最小化,减少冗余的操作,这一步改进使得耗时从5.5ms减少3.6ms,达到274帧/秒。,CPU的cache对性能的影响,位于CPU芯片上的L1高速缓存的访问速度几乎和访问寄存器堆一样快,CPU可以在一个时钟周期内访问它们。L2高速缓存是通过一条特殊的总线连接到处理器的,访问L2的时间开销要比访问L1大5倍。而通常CPU需要几十或几百个时钟周期才能访问到内存。,存储器层次结构,分层结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。,存储器层次结构中的基本缓存原理,L0和L1层之间传送通常使用1个字的块,L1和L2之间以及L2和L3之间的传送通常使用48个字的块。,局部性原理,时间局部性 在一个具有良好时间局部性的程序中,被引用过一次的变量很可能在不远的将来再多次被引用(重复引用一个变量)。空间局部性 在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。,局部性原理对速度的影响,测得软件DSC耗时增大了5.07ms,速度为98.0帧/秒,速度降低65%!,局部性原理对速度的影响,C语言以行优先顺序存储数组,二维数组在内存中存放顺序如下:,如果高速缓存和内存之间传送数据块大小是4个字,则原来的代码缓存命中率为75%,而调整后的代码缓存命中率为0。Cpu每次读数据时都必须到内存中去读,导致效率大幅度降低。,数据存储方式对效率的影响,修改后耗时减少0.0486ms,速度变为277.7帧/秒,速度只提高了1.38%。,原因分析,假设L2 cache每次从内存中读入6个字的数据,在读某个象素的参数时没有命中,将该参数所在数据块一起读入到cache中,如上图所示。之后对row、insert0insert3的访问都会命中,命中率为5/6。,原因分析,而原来的存储方式在读col0时没有命中,会将col0col5内容读入cache中,对于Row0等也是如此,,虽然在读第0点参数时命中率为0,但后面的5个点的参数已经读入到cache中,命中率同样为5/6。因而速度变化并不显著。,代码耗时比例,插值和后处理耗时46,双重循环耗时8,比较这一步耗时39%,耗时不在比较和赋值操作,而在于从内存中读取数据,通过提高空间效率提高时间效率,调整完后的DSC_PARAM结构所占内存空间只有原来的1/3,通过测试,耗时从3.6ms减少到3.1ms,运算速度变为317帧/秒,速度提高13%。这一步修改通过减少数组的大小,减少了cpu从访问内存的次数,提高了cache的利用率。,测试数据表格,测试所用机器配置 cpu:奔腾四2.8G,L1 data cache 8K Bytes,L2 cache 512K Bytes,512M内存。测试单B图像,35c50ha探头,深度为5.17。原始运算速度为15.7帧/秒。,不同pc上的比较测试,对于奔四 3.0G3.75G,cache大小一样,计算速度和cpu时钟频率基本呈线性关系。对于奔四3.0G和奔四2.8G,cpu时钟频率增大了1.07倍,而速度却增大了1.29倍,原因在于cache增大了一倍。,提高代码执行效率的一些原则,1.不要一味地追求程序的效率,应当在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。2.局部效率应为全局效率服务,不能因为提高局部效率而对全局效率造成影响。3.不要一味追求紧凑的代码,因为紧凑的代码并不代表高效的机器码。,提高代码执行效率的一些原则,4.先优化算法,再优化执行代码。比如计算从1到100的和,使用以下代码int sum=0;for(int i=1;i=100;i+)sum+=i;需要执行200次加法指令,100次比较指令,100次跳转指令。而如果使用高斯公式 sum=(1+100)*100/2;只需要执行1次加法,1次乘法,1次移位。5.找到影响代码速度的瓶颈。在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关紧要之处优化。,提高代码执行效率的一些原则,6.有时候时间效率和空间效率可能对立,此时 应当分析那个更重要,作出适当的折衷。7.如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。8.循环体内工作量最小化,减少冗余的操作,提高代码执行效率的一些原则,9.在多重循环中,应将最长的循环放在最内层。这样可以减少pc指针从内循环跳转到外循环的次数。10.减少循环中的函数调用。函数调用会带来相当大的开销,而且妨碍大多数形式的程序优化。,提高代码执行效率的一些原则,11.用低代价操作代替高代价操作。如:用乘法或其它方法代替除法,因为除法运算要占用较多CPU资源。示例:如下表达式运算可能要占较多CPU资源。#definePAI3.1416radius=circle_length/(2*PAI);应如下把浮点除法改为浮点乘法。#definePAI_RECIPROCAL(1/3.1416)/编译器编译时,将生成具体浮点数radius=circle_length*PAI_RECIPROCAL/2;,提高代码执行效率的一些原则,12.收集公共表达式。如果一个代价昂贵的计算多次出现,应该只在一个地方做它,并记录计算结果。比如:for(int i=0;i strlen(p);i+)sum+=i;每次循环都会计算strlen(p)的值,应当改成int size=strlen(p);for(int i=0;i size;i+)sum+=i;,提高代码执行效率的一些原则,13.适当使用近似值。如果精度不重要,尽量使用具有较低精度的数据类型。编写时间局部性和空间局部性良好的程序。选用正确的数学运算函数。比如:如果把求平方根的运算double a=sqrt(b);改用求幂运算double a=pow(b,0.5);来实现,运行速度大约会下降3倍。,

    注意事项

    本文(程序速度优化案例分析.ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开