Pareto原理在代码优化中的应用

时间:2021-07-15 03:57:17
Pareto原理
Pareto原理又叫80/20定律,内容是你可以用20%的工作量得到80%的结果,这个原理除了用于程序设计中,在其它领域也有应用,但它已明确地用于程序优化。


Barry Boehm在报告中说20%的程序段消耗了这个程序80%的执行时间。在早期的论文《对FORTRAN程序的经验研究》中,Donald Knuth发现不到4%的程序经常占用超过 50%的运行时间(1971)。


Knuth用一个线性计数表分析程序,发现了这样一个惊人的关系,它的含义对程序优化是清楚的。你应该测试你的程序,找出频繁使用的地方,然后对经常使用的那百分之几的代码进行优化。Knuth列表分析了他的线性计数程序并发现:两个循环花费了一半的程序执行时间,他改变了几行代码使原程序速度提高两倍。


Jon Bentley讲述了一个例子:一个一千行的程序花费了它80%的时间,在五行中求平方根,通过提高求平方根程序速度3倍的方法,他提高了原程序速度的2倍。


Bentley也在报告中讲了一个例子。一个小组发现:一半的系统操作时间花费在一个小的循环语句上,他们重新用微代码写了循环的语句,使循环速度提高十倍,但是这样做并不能改变系统的性能——他们不得不又重写了系统原来松散的循环语句。


ALGOL语言的设计小组——也是Pascal、C和Ada(曾经是最有影响的语言之一)语言的先驱,接受了如下忠告:“最好”是“好”的敌人,追求完善可能阻碍了完成,首先要完成程序,然后再完善它,需要完善的部分通常是很少的。


摘自《代码大全》Page450