// 程序段1(改进1) int gaussianSum(){ int i, j=0; for(i=1; i<100; i++) j+=i; return j; } |
|
|
这两个修改版本都不同于原先程序的语义。首先我们看到,让i从0开始是没有必要的,因为j+=i时,i=0不会做任何有用的事情;然后是,实际上没有必要每一次都计算1+...+100的和——它可以被预先计算,并在需要的时候返回。
这个例子也许并不恰当(估计没人会写出最初版本那样的代码),但这种实践在程序设计中确实可能出现。我们把改进2称为编译时表达式预先计算,而把改进1成为循环强度削减。
然而,一些新的编译器的确会进行这两种优化。不过别慌,看看下面的代码:
// 程序段2 int GetFactorial( int k){ int i, j=1; if((k<0) (k>=10)) return -1; 版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有
|