最佳化是case by case 的事情,但还是有以下几个重点。
1,在进行程序最佳化之前,先要有一个稳定,可靠的版本,而且在确定最佳化完成前,不要将程序汇入正式的版本之内。
2,调整编译器最佳化的等级,但务必记得一件事,编译器无法帮程序设计师完成所有最佳化的任务,尤其是程序风格不佳或写得零零落落的程序。
3,优先使用改良算法的手段来作效能调整,例如,无论再怎么精简的程序也无法弥补 bubble sort与quick sort 间的效能差距。
4,以空间换取时间。如果内存还剩余的话,可以试着思考利用多余的内存空间来改良算法,进而改善效能。
5,不要把程序最佳化与“用汇编语言修改”混为一谈,首先应该找到程序的热区,也就是程序中效能的瓶颈所在,再利用所有学到与 最佳化有关的技巧来试着修改它。
6,检查并尽量减少for 循环或while 循环内的迭代次数。
7,在迭代次数较多的for循环或while 循环,尽量精简循环内的程序。
8,牢记不同的内存有不同的速度,尽量把热区和程序或资料移到速度较快的内存上执行或操作
9,对大部分CPU而言,一次操作偶数或4B的整数倍的资料会有比较好的效能,检查程序中是否可能用到奇数的地址,或一次操作奇数个byte 的程序代码,如果有的话,应参考cpu date sheet试着去修改它。
10,不要试图从头到尾改写某个模块为汇编语言,先检查编译器产生的汇编语言码是否有明显的效能问题,再根据这份汇编语言码来修改即可,在修改时,应仔细研究CPU各个指令的效能,尽量使用效能较高的指令。
11,去除不必要的程序代码,许多用以除错的程序代码会忘了去除,导致在正式版本中,系统去执行了许多没有必要的程序段
最佳化的观念与技巧差不多就这些了,如果你程序设计与计算机系统的观念够扎实的话,等你碰到到问题你应该就会知道有哪些方法与技巧可以使用,不用太担心。 |