使用自增自減運(yùn)算提高效率
在使用到加一和減一操作時(shí)盡量使用增量和減量操作符,因?yàn)樵隽糠Z句比賦值語句更快,原因在于對(duì)大多數(shù)CPU來說,對(duì)內(nèi)存字的增、減量操作不必明顯地使用取內(nèi)存和寫內(nèi)存的指令,比如下面這條語句:
x=x+1;
在大多數(shù)微機(jī)匯編語言為例,產(chǎn)生的代碼類似于:
move A,x ;把x從內(nèi)存取出存入累加器A
add A,1 ;累加器A加1
store x ;把新值存回x
而如果使用增量操作符,則會(huì)有相對(duì)應(yīng)的指令支持,生成的代碼如下:
incr x ;x加1
顯然,不用取指令和存指令,增、減量操作執(zhí)行的速度加快,同時(shí)長(zhǎng)度也縮短了。
同樣的,復(fù)合賦值表達(dá)式 ( 如 a -= 1 及 a += 1 等 ) 都能夠生成高質(zhì)量的程序代碼。
提取公共表達(dá)式
在某些情況下,C編譯器不能從浮點(diǎn)表達(dá)式中提出公共的子表達(dá)式,因?yàn)檫@意味著相當(dāng)于對(duì)表達(dá)式重新排序。
然而編譯器在提取公共子表達(dá)式前不能按照代數(shù)的等價(jià)關(guān)系重新安排表達(dá)式。這時(shí),程序員需要手動(dòng)地提出公共的子表達(dá)式。
不好的代碼:
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語言
+關(guān)注
關(guān)注
180文章
7626瀏覽量
139550 -
代碼
+關(guān)注
關(guān)注
30文章
4874瀏覽量
69952 -
編譯器
+關(guān)注
關(guān)注
1文章
1651瀏覽量
49707
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
明德?lián)P視頻分享點(diǎn)撥FPGA課程--第二十章??提高效率技巧
Python常用自增運(yùn)算寫法
LTC7803如何提高效率和EMI標(biāo)準(zhǔn)合規(guī)性?
如何使用UCC28056優(yōu)化過渡模式PFC設(shè)計(jì)來提高效率和待機(jī)功耗?
keil5提高效率的技巧
卡套管的使用有助于提高效率并達(dá)到更合格的標(biāo)準(zhǔn)
AN144-通過靜默交換機(jī)設(shè)計(jì)降低EMI并提高效率

LFPAK88是提高效率的捷徑

NIKKEI邏輯整合Brocade SAN以提高效率和安全性

提高效率的DC電源模塊設(shè)計(jì)技巧

D類放大器中用于提高效率的 Y 橋應(yīng)用說明

評(píng)論