欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    软件性能与软件优化.ppt

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

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

    软件性能与软件优化.ppt

    软件性能与软件优化(V1.2),培训之前,你所理解的这次培训的主题; 三天的培训,我们的学习内容是哪些? 如何评估我们的项目质量;,两个问题,软件性能与软件质量,培训目标,软件优化的经验分享; 互动参与; 优化的案例收集; 整理成文,指导以后的软件设计;,软件性能指在指定条件下,相对于资源使用总量,软件产品提供恰当的执行效果的能力,一般包括如下一些方面: 1. 时间响应: 软件产品执行其功能时,提供恰当的响应和处理时间的能力; 2. 资源的使用效率: 在指定条件下,软件产品执行其功能时,占用恰当的资源的能力; 3. 吞吐量: 指单位时间内能处理的事件个数,或单位时间传输的数据量;,软件性能的定义,软件性能的度量,关于软件性能,软件性能与其他质量属性的关系; 软件性能的一些误区;,软件性能与研发阶段,性能,也是设计出来的,软件的优化,优化是一门工艺。 大多数人认为代码优化是放在开发周期的最后一段,然而,要想真正的设计一个优化的程序,你必须在开发过程中就要优化,你需要认真考虑算法的选择,权衡速度和尺寸和其他限制因素。 你必须关注程序中那一部分需要快或慢,对它们的性能做仔细的测试。还有一个很重要的因素,需要权衡程序在性能和代码维护难度的比重。,一.需求阶段的性能描述; 二.设计阶段的性能设计; 三.开发阶段的性能实现;四.测试阶段的性能验证;,一.需求阶段的性能描述,1.列出系统的性能需求; 2.用精确的数据指标来表达,包括最大吞吐量,响应和处理时间,资源的使用效率等; 3.必须是系统可达到的数据指标;,一.需求阶段的性能描述,我们目前存在的问题: 项目需求阶段的性能描述是否清晰? 性能的描述除了在需求阶段,还在其他阶段有所描述? 其他?,举例:ZXV10某产品的性能要求,最大32个2M终端接入能力; 单画面会议视频在MCU的视频延时小于200毫秒; 关键DSP,CPU性能留有20%余量。 关键CPU留有30%以上的空闲内存; 单板复位的时间小于6秒; 最多16路的视频混合;,二.设计阶段的性能设计,设计阶段能有哪些方法提高性能?,二.设计阶段的性能设计,1.系统体系结构的设计: 系统的体系结构从最基础架构上决定着整个系统的性能,如果这个阶段的设计作不好,对以后的研发影响很大,其他优化的设计无法弥补架构的缺陷 。,二.设计阶段的性能设计,1.系统体系结构的设计举例 i. ZXV10 MCU:分组交换和电路交换 基于分组交换的H.323协议,对数据包直接进行处理,但是因为继承原有基于时系交换的MCU,仍然采用时系交换,对于每个数据包都要进行包的拆解,时系拼凑操作,占用大量的CPU能力,也大大增加了软件复杂度,后期的性能指标很难达到。 ii.ZXJ10:MP模块 MP模块的设计采用工控机,大量操作的数据处理在本地硬盘;,二.设计阶段的性能设计,2.软件体系结构的设计: 软件体系结构也非常重要,同样的硬件,不同的软件架构,最后的系统性能差别非常大,对于各个任务的设计,任务间通讯的方式,任务优先级的设置,任务同步的方式等,都要在系统设计阶段好好考虑进来。,二.设计阶段的性能设计,2.软件体系结构的设计举例 i.时钟节拍的设计,太低的频率导致任务响应时间变大,太高的频率会让系统开销太高,需要根据系统特点进行选择,例如MPC8260的时钟节拍可以选择60-100; ii.对消息队列的操作,是否采用阻塞方式等; 举例:为了获得高精度的定时器,采用更高的系统时钟;减少不必要的系统调用开销;,二.设计阶段的性能设计,3.硬件的选型 : 不同的处理器,性能不同,适用领域也不同,有的适用大量的运算,如DSP,有的适用通讯处理,所以,需要在芯片选型即确定哪些芯片是我们需要的,硬件选型错误带来的影响也是致命的。,二.设计阶段的性能设计,3.CPU的选型 举例,二.设计阶段的性能设计,4.好的算法和数据结构: 选择一个好的算法和好的数据结构,其影响远远大于选择一个好的语言和好的编译器; 算法对应用程序执行速度的影响是最显著的。 一个大量使用了排序的程序,使用堆排序的执行速度远大于使用冒泡排序的程序。 算法没有好的优化的程序,即使把它按照处理器的优化指令做成了硬件版,它远还是比不上使用了优化算法的纯软件程序。 在我们做优化的时候,一定要分析代码中主要使用的算法,首先考虑是否有明显更好的算法,如果有,马上放弃现有的算法,避免在低效算法上进行徒劳的优化。,,,二.设计阶段的性能设计,好的算法和数据结构: 例子:ZXV10非全交换的实现;,全交换的处理思路,非全交换的处理思路,二.设计阶段的性能设计,5.改造协议栈和操作系统 : 底层软件的效率,很大程度依赖操作系统和协议栈,很多时候并不能满足要求,就需要定制操作系统,来完成符合要求的模块,同时,对于协议栈,因为分层结构,会导致性能的下降,在不能满足需求的时候,也要进行裁减和修改,甚至需要重写协议栈代码,根据需求来开发定制协议栈 。,二.设计阶段的性能设计,5.改造协议栈和操作系统 举例 i. 改造TCP/IP协议栈: 重写适用系统的协议栈; ii.完善TCP/IP协议栈: 对于UDP协议处理,不在进行socket的收发处理,而是直接从IP层获得数据包进行处理,绕过UDP协议和SOCKET接口,减少内存拷贝次数,减少大量的查询操作,从而大大提高程序效率。 数据发送可以直接调用驱动层的发送函数。,二.设计阶段的性能设计,6.驱动优化设计 优化的驱动设计可以让整个软件执行效率大大提升,有经验的开发人员,特别是底层技术专家,可以设计出非常高效的驱动程序;,二.设计阶段的性能设计,6.驱动优化设计 举例 单板同时处理16个2M终端数据,每秒收发数据包达到3200个,每次中断都要保存,恢复环境,占用大量CPU时间,通过设置BD表,每32个数据包产生一次中断,而不是先前的一个数据包一次中断,从而让驱动效率提升200%,系统效率提升100%。同时,因为处理时间都在毫秒级别,对应用没有影响;,二.设计阶段的性能设计,7. CPU的特性 : i.主频 : 很多CPU都可以工作在不同的主频下,例如MPC860T,可以在65M,50M,8260可以在200M,166M,133M等。 ii. DMA: 对于大量数据访问,数据拷贝,DMA是提高程序效率很好的方法,但是要注意和主程序之间的异步操作。DMA虽然不会占用CPU时间,但是会和CPU争夺总线资源;,二.设计阶段的性能设计,7. CPU的特性 : iii.CACHE的打开和关闭 CACHE的打开和关闭对于程序效率差别非常大,应该尽早打开数据和程序CACHE。同时,对于非常高效的代码,例如小的驱动程序,可以锁定到CACHE,从而提高局部代码的运行效率;,二.设计阶段的性能设计,7. CPU的特性 : iv:字节对齐 对于系统中的大量数据拷贝,应该在设计的时侯就要考虑到字节对齐,这样在调用memcpy的时侯,会很容易的进行字拷贝,长字拷贝,效率差别很大,字节对齐一定要在设计阶段考虑进来,特别是缓冲区的设计; memcpy的实现机制;,二.设计阶段的性能设计,7.动态内存分配 (1)对于频繁使用的数据结构,不要每次使用时候分配内存,使用后马上释放。否则,如果你是在一个循环体内使用它的,就会花费很多时间在分配和释放内存上。(2)内存分配方式的选择。使用标准C运行库的Malloc()和Free()是最简单也是最低效的方式; (3)创建内存管理模块;,二.设计阶段的性能设计,8.文件IO使用: 硬盘是慢速设备,文件IO操作是一个非常消耗时间的操作。 (1)使用标准C的fopen(),fread(),fwrite()等进行文件IO最简单,最低效。 (2)使用C+的IO流改进了效率,因为它往往对输出的流进行缓冲,直到缓冲满时候刷新,减少了磁访问次数。 (3)一个改进的方式是直接使用ReadFile()和WriteFile()等系统调用,自己管理缓冲区。 (4)可以剧烈的改进IO操作的两个方式是:内存映像文件和异步文件IO。,二.设计阶段的性能设计,9.缓冲区的设计 : 缓冲区,消息队列大小等,也是根据系统的吞吐量来设计,注意不要出现缓冲区过小,或者消息队列太小导致丢消息;,三.开发阶段的性能实现,开发阶段都有哪些优化方法?,三.开发阶段的性能实现,1.嵌入汇编语言 : 汇编语言的效率要比C语言高很多,特别是一些要求效率非常高的算法,都需要用汇编实现,汇编的开发效率并不高,所以,好的策略是在C程序中嵌入汇编语言。,三.开发阶段的性能实现,1.嵌入汇编语言 举例 因为有大量的数据拷贝,系统提供的memcpy性能很低下,通过汇编代码即可看出来,通过重新写汇编代码,则可以提供比原有实现高效很多的方法,注意,这个要保证输入参数都是字对齐的,所以缓冲区也要设计成字对齐。先前的汇编代码:略,重写的memcpy汇编代码: bcopyLongsm2m: _bcopyLongsm2m: addir3,r3,-4 addir4,r4,-4 mtctrr5 bcfLGOm2m: lwzur7,4(r3) stwur7,4(r4) bdnzbcfLGOm2m blr,三.开发阶段的性能实现,2.使用优化编译选项: 每个编译器都有自己的优化选项,如果可能,都设置成最高级的优化。初期可以不打开优化开关,但是后期一定要打开,编译开关打开后,可能系统发生异常崩溃,这多半和优化选项无关,而是系统中有时间敏感部分,在优化后,代码执行更块,导致运行异常。 举例: -o1 寄存器优化,会将局部变量优化成寄存器,性能提高很大,文件变小; -o2 局部优化,会优化汇编语句前后顺序,会在函数内部排流水线,性能提高很大,文件变小; -o3 文件级优化,部分函数会被内联,且可能会被内联后排流水线,性能提高与应用关系很大,文件可能变大;,三.开发阶段的性能实现,3.循环变量与条件判断的使用: 对于循环内有判断条件的,尽量把判断条件转移到循环语句外,这样可以避免,每次循环都进行判断操作,重要的是如果是dsp软件,这样会破坏流水线的工作,让程序效率大大降低。for (循环条件) if (条件判断 ) if (条件1) do ,三.开发阶段的性能实现,4.条件语句,switch语句的判断顺序。 对于多重条件语句,应该把执行次数最多的条件分支放在最前面,按可能的调用频率来排列顺序。 switch( tMsg.cMsgType ) case BOARD_INFO_REQ: /* 0 x00 处理板信息请求消息:MPC860-MPC8260-C6202 OK! */ ProcessBoardInfoReq( ,三.开发阶段的性能实现,5.注意类型转换 。 一个频繁使用的循环体内作从double到int的转换会消耗可能比计算本身还多的时间。 。,三.开发阶段的性能实现,6.使用寄存器变量 。 register会让编译器把指定变量放到寄存器,提高运行效率 。 参数,局部变量;,三.开发阶段的性能实现,7.短路语句 。 /* 如果不是UDP协议或者不是本地包,则释放,直接返回 */ if( ( pIpHead-cProtocol != PROTOCOL_UDP ) ,四.测试阶段的性能验证,测试阶段如何验证性能?,四.测试阶段的性能验证,工具软件的使用 。 1.Rational Robot; 2.CPU性能测试工具; 3.大容量数据包发送软件; 4.实际设备模拟软件;,五.优化的关键点,性能是需要从需求,设计,实现到测试都应该考虑的内容,代码优化是一个可以永无止境的工作,优化工作可能渗透到应用程序的各个细节和软件开发的各个阶段,对软件工程的管理控制是不利的。 它会花费了开发人员更多的精力和时间来大量的修改代码甚至修改最初的设计。,五.优化的关键点,1.架构方面的专家; 2.底层软件技术的专家;,六.推广建议,性能是所有产品都要关注的质量属性,公司各个事业部在这方面的积累也非常多,如果能把各个事业部的设计案例和经验汇总起来,指导我们进行设计和实现,会有非常大的帮助; 专家的培养,一个专家胜过大量普通的开发人员,对于攻关问题的解决至关重要; 优化经验的积累,对于一个产品线非常重要; 过程数据,信息收集和总结对于优化的经验积累帮助很大,一定要保存原始的数据和优化的过程记录; 在需求,设计,实现,测试各个阶段,真正把性能重视起,而不是最终的补救;,六.推荐书籍,软件架构评估; 软件架构实践; 编程珠玑; 软件优化技术IA-32平台的高性能手册; 相关操作系统,CPU手册等; 程序设计实践;,欢迎提问和讨论,印象深刻的内容: 培训需要改进的地方: 培训值得借鉴的地方:,知识回顾Knowledge Review,

    注意事项

    本文(软件性能与软件优化.ppt)为本站会员(李医生)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开