關於幾個優化

2021-07-10 23:44:03 字數 772 閱讀 5984

計算機中的指令執行時間是:

加減法運算  -----1ns

乘法運算    ------5~6ns

除法運算   -------50ns

因此在編寫程式時,應該使用一些操作代替乘除法的操作。

1、表示式優化(替換程式中的乘除法)

如 a * 8 可以替換為 a << 3

而a * 13 可以替換為 a << 3 + a << 2 + a

但是除法運算卻不可以。只有除法操作中的除數正好是乙個2的次冪時才能替換除法運算如a / 8可以替換為a >> 3.但是a / 13則無能為力。

2、表示式優化(常量摺疊)

在進行運算的過程中,通常需要進行連續的四則運算。如下所示:

int a = 10;

a = a + 2 * 17 + 6;

這個程式段實際上等同於:

int a;

a = a + 40;

寫成這樣程式實際上只需要進行一次計算,計算a + 40的值。

3、表示式優化(儲存問題)

語句 x = x + 1;

該語句在編譯時編譯器會認為賦值號兩邊的運算元不是同乙個運算元,而是兩個。儘管使用者知道這是乙個運算元。這時該語句分為三步,分別是:尋找儲存左邊運算元x的記憶體單元位址;尋找儲存右邊運算元x的記憶體單元位址;計算x+1的值並儲存在變數x中。

而語句 x += 1;

編譯器會認為賦值號兩邊的運算元是同乙個。所以只需要兩步。

關於SQL優化的幾個注意點

1 sql變數或字段的型別匹配 2 避免複雜的多表關聯 3 使用decode來減少處理時間 4 減少對錶的查詢 5 用not exists替代not in 6 用 替代 7 對於並列條件的解析順序 從後向前。表關聯語句放在最前,將能過濾掉最大記錄數的條件放在最後。8 表連線時的掃瞄順序 從後向前,將...

關於Linux編譯優化幾個必須掌握的姿勢

當選擇了 config cc optimize for size 它會是os,否則就是o2。其實o2和os,都是一些優化選項的集合 gcc c q o2 help optimizers tmp o2 opts gcc c q os help optimizers tmp os opts 前者傾向於基...

宋寶華 關於Linux編譯優化幾個必須掌握的姿勢

首先我們都知道,linux核心如果用o0編譯,是無法編譯過的,linux的核心編譯,要麼是o2,要麼是os,這點從linux的makefile裡面可以看出 當選擇了 config cc optimize for size 它會是os,否則就是o2。其實o2和os,都是一些優化選項的集合 gcc c ...