最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

自編教材分享:第六章—程序編寫優(yōu)化(五)

2023-10-16 09:29 作者:先進編譯實驗室  | 我要投稿


語句級優(yōu)化

刪除冗余語句

在開發(fā)和修改程序時可能遺留有死代碼,死代碼是指程序在一個完整的執(zhí)行過程該段代碼并沒有得到任何的運行,也可能是一些聲明了但沒有用到的變量,此時可以將其刪除,避免程序在運行中進行不相關的運算行為,減少運行的時間。

優(yōu)化前代碼:

優(yōu)化后代碼:

代數(shù)變換

程序員在編寫程序時可能忽略了代數(shù)表達式也可以進一步優(yōu)化,達到簡化計算縮短運行時間的目的。此代碼中的計算語句可以進行簡化,原計算語句中含有乘法、加法和除法三種運算,而簡化后僅剩乘法運算。

優(yōu)化前代碼:

優(yōu)化后代碼:

去除相關性

標量擴展

語句中依賴關系的存在非常不利于進行語序調整、向量化等優(yōu)化方法的開展,且由于編譯器優(yōu)化的局限性,需要優(yōu)化人員在編寫程序時盡量消除依賴關系。

標量擴展是將循環(huán)中的標量引用用編譯器生成的臨時數(shù)組引用替換,可以有效地消除一些由內存單元的重用而導致的依賴。

優(yōu)化前代碼:

優(yōu)化后代碼:

標量重命名

此循環(huán)中語句S1到S4之間存在真依賴,S1到S3之間存在輸出依賴,這些語句間的依賴都是由于標量T引起的,此時可以通過引入兩個不同的變量代替現(xiàn)有的變量T來消除依賴。

優(yōu)化前代碼:

優(yōu)化后代碼:

數(shù)組重命名

數(shù)組的存儲單元有時被重用會導致不必要的反依賴和輸出依賴,此時可以使用數(shù)組重命名的方法來消除。

優(yōu)化前代碼:

優(yōu)化后代碼:

數(shù)組重命名需要增加和數(shù)組大小成比例的額外內存空間,因此數(shù)組重命名的安全性和有利性都比標量重命名復雜,這種代價可能會嚴重影響到程序的性能,因此在實施數(shù)組重命名時應該更加謹慎。

公共子表達式優(yōu)化

當程序中表達式含有兩個或者更多的相同子表達式,僅需要計算一次子表達式的值即可

優(yōu)化前代碼:

優(yōu)化后代碼:

分支語句優(yōu)化

合并判斷條件

當程序中的分支判斷條件是復雜表達式,優(yōu)化人員可以將其進行優(yōu)化

優(yōu)化前代碼:

優(yōu)化后代碼:

生成選擇指令

一些平臺支持選擇指令,選擇指令是一個三目運算指令,在某些情況下可以將分支指令用選擇指令進行替換,達到提升效率的目的。

優(yōu)化前代碼:

優(yōu)化后代碼:

運用條件編譯

由于宏條件在編譯時就已經(jīng)確定,編譯器可直接忽略不成立的分支,所以條件編譯是在編譯時判斷。而普通分支判別是在運行時判斷,故編譯后的代碼要長,效率也不如條件編譯。

優(yōu)化前代碼:

優(yōu)化后代碼:

移除分支語句

如果在程序設計時,編程人員能夠將各分支路徑的計算結果放到一張表中,并將分支條件轉化為表中值對應的索引,那么就可以將分支跳轉轉化為訪問表中元素,這是查表法移除分支的主要思想。

優(yōu)化前代碼:

優(yōu)化后代碼:

平衡分支判斷

C語言中的switch運算符是程序員經(jīng)常使用的一種語法,包含大量的分支,在一些程序中switch運算符可以含有數(shù)千個設置值,若直接實現(xiàn)這種需求的話,所得到的邏輯樹會特別高,以下面switch分支語句為例。

下圖為分支語句對應的判斷邏輯樹,該代碼所對應的優(yōu)化邏輯樹的高度為6,當a的值為10時需要6次判斷,可以通過平衡判斷分支的方法對分支語句進行優(yōu)化,優(yōu)化后邏輯判斷樹如右圖所示,當a的值為10時需要4次判斷,即平均僅需要4次比較操作就能完成判斷。


自編教材分享:第六章—程序編寫優(yōu)化(五)的評論 (共 條)

使用qq登录你需要登录后才可以评论。
赣州市| 淮阳县| 台前县| 贵阳市| 越西县| 兰考县| 屯留县| 清苑县| 江口县| 巴彦淖尔市| 旬邑县| 弥渡县| 娄烦县| 息烽县| 和林格尔县| 崇文区| 呈贡县| 海丰县| 舟曲县| 土默特右旗| 长乐市| 宝兴县| 清镇市| 元谋县| 思茅市| 东阿县| 南京市| 定南县| 团风县| 正宁县| 林芝县| 宜州市| 涟源市| 临洮县| 吴堡县| 云和县| 耿马| 广宗县| 河东区| 桐柏县| 镇平县|