程序优化的内容和原则
2005-04-10 20:40
375 查看
程序优化的内容和原则对程序的优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个矛盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如果优化程序的执行速度,通常会带来增加代码的副作用,很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。如果我们确实需要对某些代码进行实质性的优化,那么首先要清楚哪一部分代码的执行最浪费时间。往往最浪费时间的代码很少,大部分是大量的循环最占用时间。优化的级别常分为三类:算法级优化;语言级优化;指令级优化。体现一个程序员水平最重要的地方就是算法。一个好的算法使用非常少的代码就能实现原来很复杂的操作,但这是很难做到的。尤其是这些算法经常与负载的善有关,所以需要比较和测试才能有好的效果。语言级优化就是采用较少的程序语言代码来代替冗长的代码块,例如,把某些赋值语句放到多循环的外面、使用inline函数、使用指针、用引用代替结构赋值、使用指针的移动代替内存拷贝、把初始化操作放在一开始而不是循环中间,等等。它所遵循的原则是“无代码”原则,减少需要执行的语句是提高速度的最直接的做法。这样的程序比较简捷,运行效果也比较稳定。指令级优化则要深入得多,这里所用的语言一般是汇编语言。这种方法的调试和测试比较复杂,程序不太容易懂,也更容易出错,结果有时与硬件有关。这种方法所针对的代码数量应该比较少,仅是关键的部分。这样的优化是以指令周期作为单位的。优化的内容一般有:代码替换使用周期短的指令代替周期长的指令。如,使用左移指令代替乘数是2的倍数的乘法;使用倒数指令代替除法指令。减少分支预测这是Pentium以上CPU特有的功能,它会执行该指令前预读一些指令,但是如果有分支就会造成预读的失效。并行指令这是Pentium以上CPU特有的多流水线的优势,两条(或多条,在Pentium Pro以上)参数无关的指令可以被并行执行。MMX指令在处理大量字节型数据时可以用到它,一次可以处理8个字节的数据。指令的预读在读取大量数据时,如果该数据不在缓存里,将会浪费很多时间,因此需要提前把数据放在缓存中。这个功能在Pentium II的下一代CPU中出现。优化原则有以下3条:等价原则:经过优化后不应改变程序运行的功能。有效原则:使优化后所产生的目标代码运行时间确实较短,占用的空间确实较小。合算原则:应尽可能以较低的代价取得较好的优化效果,应当为值得优化的程序进行优化。
相关文章推荐
- 优化ASP.NET程序的一些原则(3)
- Epic Games资深程序工程师王祢: 使用UE4制作VR内容的优化
- 关于yslow的网站优化原则14条的部分内容的理解
- greenplum程序开发优化14条原则
- C51笔记(2)--Keil C 程序优化
- 页面内容以及细节怎么优化
- SQL优化原则
- 优化Hibernate程序性能
- 优化powerdesigner在table视图中的显示内容
- MySQL数据库SQL优化(原则)
- matlab程序性能优化与混合编程技术介绍
- .NET程序优化(GCServer )
- 优化Windows操作系统的程序运行
- Java程序性能优化技巧
- android之java程序性能优化(不断补充)
- 数据库性能优化三:程序操作优化
- 深入理解计算机系统:优化程序性能
- 【Android程序优化,避免内存泄露】- [实战一]:避免内存泄露的最后一道墙,使用leakcanary分析程序中的内存泄露。
- 关于程序性能优化基础的一些个人总结
- 在微信小程序中渲染HTML内容的方法示例