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