如何使用自增自减运算提高效率

描述

使用自增自减运算提高效率

在使用到加一和减一操作时尽量使用增量和减量操作符,因为增量符语句比赋值语句更快,原因在于对大多数CPU来说,对内存字的增、减量操作不必明显地使用取内存和写内存的指令,比如下面这条语句:

x=x+1;

在大多数微机汇编语言为例,产生的代码类似于:

move Ax      ;把x从内存取出存入累加器A
add A1       ;累加器A1
store x        ;把新值存回x

而如果使用增量操作符,则会有相对应的指令支持,生成的代码如下:

incr x           ;x加1

显然,不用取指令和存指令,增、减量操作执行的速度加快,同时长度也缩短了。

同样的,复合赋值表达式 ( 如 a -= 1 及 a += 1 等 ) 都能够生成高质量的程序代码。

提取公共表达式

在某些情况下,C编译器不能从浮点表达式中提出公共的子表达式,因为这意味着相当于对表达式重新排序。

然而编译器在提取公共子表达式前不能按照代数的等价关系重新安排表达式。这时,程序员需要手动地提出公共的子表达式。

不好的代码:

float a, b, c, d, e, f;
...
e = b * c / d;
f = b / d * a;

推荐的代码:

float a, b, c, d, e, f;
...
const float t = (b / d);
e = c * t;
f = a * t;

另一个例子,不好的代码:

float a, b, c, e, f;
...
e = a / c;
f = b / c

推荐的代码:

float a, b, c, e, f;
。。。
const float t = (1.0f / c);
e = a * t;
f = b * t;
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分