- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中级教程 编程效率-17ppt课件
C语言中级培训 十一、编程效率 关于程序效率(1) 没有意识到程序效率的编码者,可能会写如下的代码: for(?i=0;?i1000;?i++?) ?????{????GetLocalHostName(?hostname?);?????????...?????}? GetLocalHostName的意思是取得当前计算机名。实际上取得一次机器的名字就可以,而把它放在循环体中,它就被调用了1000次,有999次是多余的。 如果没有意识到无效率行为的危害,程序中多次出现如此效率低下的行为,那么程序运行会非常慢,有时会慢得使用户难以接受。 区分老手和新手的试金石: 求n! . 关于程序效率(2) 程序效率 程序效率,是用执行的步骤(step)数(时间复杂度)、占内存的多少(空间复杂度)来衡量的。 完成某项工作,执行的步骤(step)的次数最少、占用内存最小是程序员所追求的。特别是嵌入式系统的开发,内存等资源都是有限的。 因此,提高效率的着眼点应该是: 减少执行次数 减少占用空间 如何提高程序效率(1) 效率改善的指导原则: 在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率; 如果程序的正确性、可靠性得不到保证,提高效率就失去了根本; 如果程序的健壮性得不到保证,提高效率就失去了目标; 如果程序的可读性得不到保证,提高效率就失去了方向; 如何提高程序效率(2) 以提高程序的全局效率为主,提高局部效率为辅; 如果只从局部角度出发,局部效率的改善一般对全局效率改善作用不大,有时甚至影响全局效率的改善; 应该从全局角度出发,整体考虑,作出统一改善的调整,有的时候局部利益为配合整体需要应作出牺牲; 如何提高程序效率(3) 在优化程序的效率时,应当先找出限制效率的“瓶颈”——关键点: 非关键点的改善,不会根本改变效率的现状; 先进行一些基准数据测量和问题收集,寻找提高效率的关键点; 有时一次关键的改动还不能解决问题,还需要进一步的数据测量和持续的改进,直到符合要求; 如何提高程序效率(4) 先优化数据结构和算法,再优化执行代码; 因为O(n2)的算法写不出O(nlog2n)的程序,因此写程序前应该考虑数据结构和算法的选择和优化; 如果你已经选择了正确的算法,那么到了写程序时,才有可能去关心执行代码的优化问题; 如何提高程序效率(5) 时间效率和空间效率可能对立,此时应当分析、权衡哪个更重要,作出适当的折中; 一般来讲,在空间允许的时候,我们会花费空间换取时间效率的大幅提升; 在时间效率和空间对立的时候,我们应根据需要,在两者之间作出适当折中; 如何提高程序效率(6) 时间效率改善的措施——减少内存分配的次数 一次能够申请的内存,就不要多次申请; 函数中的存储会被多次访问 ,“相对不变量”的变量请定义成为static。如: GetLocalHostName(char*?name)?{?????char?funcName[]?=?GetLocalHostName; ? ?? sys_log(?%s?begin......,?funcName?);?????...?????sys_log(?%s?end......,?funcName?);?}?如果这是一个经常调用的函数,每次调用时都要对funcName分配内存,这个开销很大。把这个变量声明成static,当函数再次被调用时,就会省去了分配内存的开销,执行效率很好。 如何提高程序效率(7) 时间效率改善的措施 提高循环体效率 减少循环次数 减少循环体内执行语句的数量 例子参见《1.1 关于程序效率》序中的例子 如何提高程序效率(8) 在多重循环中,如果有可能,应当将长的循环放在最内层,短的循环放在最外层,以减少CPU 跨切循环层的次数。下例a和b的功能一样,但效率不同: 例a: for (i=0; i5;i++) //5次切换 { for (j=0; j100; j++) Dothing(); } 例b: for (j=0; j100;j++) //100次切换 { for (i=0; i5; i++) Dothing(); } 如何提高程序效率(9) 减少指针定位 指针(-)使用很方便,但实际运行往往需要进行地址计算;不必要的地址计算会导致性能下降; 尽可能减少-的多级嵌套。 如何提高程序效率(10) 提高数学表达式的效率 a*b + a*c == a*(b+
您可能关注的文档
- 2011红鹤沟通青岛高端项目推广策略ppt课件.ppt
- 2011高考现代文阅读___如何分析文章标题ppt课件.ppt
- 2011首次期货投资分析真题讲解ppt课件.ppt
- 2011年神经本科(5年制).ppt
- 2012届浙江湘教版学海导航新课标高中总复习(第1轮)地理:模块1必修1第3章第4课常见的热力环流及其成因2.ppt
- 2012大学英语四级考试做题技巧.ppt
- 2011王立福的软件工程课件(自学考试)ppt课件.ppt
- 2012届浙江湘教版学海导航新课标高中总复习(第1轮)地理:模块2必修2第4章第1课_人类面临的主要环境问题ppt课件.ppt
- 2011珠江珠纺城推广方案ppt课件.ppt
- 2012年中考复习建议.ppt
最近下载
- 2023北京西城高三(上)期末英语(教师版).docx VIP
- 星火英语四级词汇.pdf VIP
- 混凝土通病预防措施.pdf VIP
- 乡镇党委宣传委员、统战委员2024年度民主生活会个人带头严守政治纪律和政治规矩方面,带头增强党性、严守纪律、砥砺作风等方面四个带头对照查摆剖析材料2篇.doc VIP
- 2025年土木工程施工试卷及答案 .pdf VIP
- 外研版三起英语六年级下册教材分析.docx
- 政府采购项目招标代理机构服务 投标技术方案(技术标).docx VIP
- 吴越春秋原文全文集.docx VIP
- 土木工程施工》期末考试试卷A(有答案).pdf VIP
- 成都经温江至邛崃高速公路扩容工程对四川崇州桤木河省级湿地公园生态影响评价报告.docx VIP
文档评论(0)