使用自增自減運算提高效率
在使用到加一和減一操作時盡量使用增量和減量操作符,因為增量符語句比賦值語句更快,原因在于對大多數(shù)CPU來說,對內(nèi)存字的增、減量操作不必明顯地使用取內(nèi)存和寫內(nèi)存的指令,比如下面這條語句:
x=x+1;
在大多數(shù)微機匯編語言為例,產(chǎn)生的代碼類似于:
move A,x ;把x從內(nèi)存取出存入累加器A
add A,1 ;累加器A加1
store x ;把新值存回x
而如果使用增量操作符,則會有相對應的指令支持,生成的代碼如下:
incr x ;x加1
顯然,不用取指令和存指令,增、減量操作執(zhí)行的速度加快,同時長度也縮短了。
同樣的,復合賦值表達式 ( 如 a -= 1 及 a += 1 等 ) 都能夠生成高質(zhì)量的程序代碼。
提取公共表達式
在某些情況下,C編譯器不能從浮點表達式中提出公共的子表達式,因為這意味著相當于對表達式重新排序。
然而編譯器在提取公共子表達式前不能按照代數(shù)的等價關系重新安排表達式。這時,程序員需要手動地提出公共的子表達式。
不好的代碼:
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;
-
C語言
+關注
關注
180文章
7594瀏覽量
135862 -
代碼
+關注
關注
30文章
4722瀏覽量
68234 -
編譯器
+關注
關注
1文章
1617瀏覽量
49015
發(fā)布評論請先 登錄
相關推薦
評論