大話C語言 優化結構控制(一)

2021-07-27 15:35:18 字數 889 閱讀 1530

今天我們來談談優化結構控制:

表示式優化是最基本的優化,使用簡潔高效的表示式可以大幅度的提高程式的效率。優化是乙個廣泛而深入的話題,在程式執行過程中,加減法是計算機最喜歡的操作。其執行時間只占用1個時鐘週期,是最快速的操作。位運算與移位計算執行速度與減法相近,乘法時間要長,大概在5~6個週期完成。不用說都知道除法最慢,大約需要50個時鐘週期。因此,我們需要用一些操作代替乘除法。

這顯然可以提高程式的執行效率。

舉例說明:

#include int main()

輸入結果:

a divided by 4:4

a multiplied by 5:80

移位操作是乙個很好的選擇,資料左移移位相當於乘以2,右移移位相當於除以2。

總結:所有乘法操作都可以用左移運算來替換,例如:a*8可以替換為a<<3,而a*13可以替換為(a<<3)+(a<<2)+a,但是除法操作不可以。只有除法操作的除數正好是乙個2的n次冪才能用右移操作來替換除法,例如:a/8可以替換成a>>3,但是a/13卻無能為力了。

在進行計算中,通常要進行連續的四則運算,例如:

int a=10;

a=a+2*17+6;

這個程式實際上相當於

int a;

a=a+40;

如果寫成第二種形式,程式只用執行一次。

如果寫成第一種,程式要進行1次乘法2次加法。

誰速度快就一目了然了。這種將程式中的常量人為的計算的方法叫做常量摺疊。

對於現代的編譯器來說,常量摺疊已經是一種常規的常量摺疊方式。也就是說,即使研發人員沒有使用常量摺疊,編譯器會自己執行。當然有些情況不使用會更好,便於理解與維護。

大話資料結構C語言 17 鏈式佇列及其C語言實現

佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已,叫做鏈佇列 為了方便,將隊頭指標指向鏈佇列的頭結點,而隊尾指標指向終端結點 空佇列的時候,front和rear都指向頭結點 鏈佇列的結構為 typedef int qelemtype qelemtype型別根據實際情況而定,這裡假...

C語言流程控制結構 順序結構 選擇結構

c語言3種流程控制結構 順序結構 選擇結構 迴圈結構。順序結構 最簡單的結構,不需要關鍵字。安照 順序一步步執行。選擇結構 一 if簡單使用 1 第一種結構 if a 如果條件為真,就執行後面的語句,否則不執行。if 條件 2 第二種結構 if else a 如果條件成立就執行語句1,否則執行語句2...

C語言入門(二) 七種控制結構

c語言中,一共有七種控制結構順序結構 三種選擇結構 if if else switch 三種迴圈結構 while for do while 任何一種程式,根據所需要實現的不同演算法,都可以由著七種結構組合而成。順序結構 順序結構是c語言的一種內建結構,c語言從main函式開始,順序執行。if單分支結...