程序优化介绍(c语言).ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序优化介绍(c语言).ppt

Switch 的用法 Switch 可能转化成多种不同算法的代码。其中最常见的是跳转表和比较链/树。推荐对case的值依照发生的可能性进行排序,把最有可能的放在第一个,当switch用比较链的方式转化时,这样可以提高性能。此外,在case中推荐使用小的连续的整数,因为在这种情况下,所有的编译器都可以把switch 转化成跳转表。 减少运算,保存中间变量 计算机用于计算的时间远大于用于保存变量的时间 a = x + 1/x + 1/(x * x); if(test) { b = 1 + 1/x + 1/(x * x) + 1/(2 + x); c = y + 1/x + 1/(x * x) + 1/(2 + x); d = z + 1/x + 1/(x * x) + 1/(2 + x) + int_func(x); e = q + 1/x + 1/(x * x) + 1/(2 + x) + int_func(x); } t0 = 1/x; t1 = t0 + t0 * t0; a = x + t1; if(test) { t2 = t1 + 1/(2 + x); b = 1 + t2; c = y + t2; d = z + t2 + int_func(x); e = q + 1/x + 1/(x * x) + 1/(2 + x) + int_func(x); } 算法优化一列 数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。举例如下,求 1~100的和。 int I , j; for (I = 1 ;I=100; I ++) {  j += I; } int I; I = (100 * (1+100)) / 2 本次培训总结 程序优化的必要性。 程序优化的级别。 程序优化的注意事项。 一些常用的c优化方法。 下次培训预告 本次培训只是对程序优化的入门介绍。接下来将会对C优化,IA优化,MAP优化,BLACKFIN优化进行培训。 我们会学习到以下的知识点: 单指令多数据SIMD 数据对齐 减少数据依靠。 向量化编程。 并行处理。 …… 谢谢大家 节目刚刚开始,越后越精彩!! 程序优化介绍(c语言) 培训的对象 C语言熟手 对优化感兴趣的 想培训又不愿看文档,想有人讲给你听的。 想成为编程狂人的 想成为性能狂人的 相信优化是不必要的,或者认为优化应该交由编译器完成的 为什么要程序优化 一个优秀程序员的必要素养。 编译器还不代替人工操作的程序优化 。 低层程序需要优化。 同样的DSP能跑出更多的功能。 …… ??? !!!优化还需要理由吗 程序优化的三个级别 第一级:代码级 第二级:算法级 第三级:表驱动状态机 代码级优化 代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题; 语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级; 这个级别的优化需要掌握大量的小的优化技巧和知识,需要不断的积累; 简单的语句调整、公共表达式提取、废代码删除等当前的很多编译器也能做到了,但也需要了解一些编译器的优化能力使自己的代码配合编译器做好优化; 用汇编重写并不是简单把高级语言改写为汇编实现,那样写的汇编很可能没有当今的编译器产生的代码好,所以如果决定用汇编实现,那就应该按照汇编的角度来规划自己的实现,适当的参考编译器生成的汇编码也是可取的(特别是新手,我也一样);在某些领域,使用CPU的新特性和新的指令集等将产生巨大的性能收益,这些地方经常采用汇编来实现。 算法级优化 算法级优化强调的重点是针对问题的算法;即选择和构造适合于问题的算法;(冒泡排序还是快排的选择问题是这一级早就应该完成的)很多经典算法都对问题作了一些假设(包括我们当前已经完成的算法实现),而在面对实际问题时“新的视角”提示我们应该重新检视这些假设,并尝试不同的思考问题的角度,寻求适合于问题的新算法; 发掘问题的本来意义,从不同的角度思考面对的问题,使用适合于问题的的算法; 尝试打破一些规则,发掘和怀疑自己的某些假定,恢复问题的本来面目; 表驱动状态机 将问题抽象为另一种等价的数学模型或假想机器模型,比如构造出某种表驱动状态机;这一级其实是第二级的延伸,只是产生的效果更加明显,但它有其本身的特点(任何算法和优化活动都可以看作是他的投影);这一级一般可以产生无与伦比的快速程序, 要达到这一级需要大量修炼的;并且思考时必须放弃很多已有的概念或者这些概念不再重要,比如:变量、指针、空间、函数、对象等,剩下的只应该是那个表驱动状态机; 我想把这种境界描述为:空寂

文档评论(0)

只做精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档