旧代码 :
total =
a->b->c[4]->aardvark +
a->b->c[4]->baboon +
a->b->c[4]->cheetah +
a->b->c[4]->dog;
新代码 :
struct animals * temp = a->b->c[4];
total =
temp->aardvark +
temp->baboon +
temp->cheetah +
temp->dog;
一些老的 C 语言编译器不做 聚合优化 ,而符合 ANSI 规范的新的编译器可以自动完成这个优化,看例子 :
float a , b , c , d , f , g;
。。。
a = b / c * d;
f = b * g / c;
这种写法当然要得,但是没有优化
float a , b , c , d , f , g;
。。。
a = b / c * d;
f = b / c * g;
如果这么写的话,一个符合 ANSI 规范的新的编译器可以只计算 b/c 一次,然后将结果代入第二个式子,节约了一次除法运算。
|