![代碼優(yōu)化課件_第1頁](http://file4.renrendoc.com/view8/M02/12/1C/wKhkGWba7VeAF27IAAGd4hB5DYY298.jpg)
![代碼優(yōu)化課件_第2頁](http://file4.renrendoc.com/view8/M02/12/1C/wKhkGWba7VeAF27IAAGd4hB5DYY2982.jpg)
![代碼優(yōu)化課件_第3頁](http://file4.renrendoc.com/view8/M02/12/1C/wKhkGWba7VeAF27IAAGd4hB5DYY2983.jpg)
![代碼優(yōu)化課件_第4頁](http://file4.renrendoc.com/view8/M02/12/1C/wKhkGWba7VeAF27IAAGd4hB5DYY2984.jpg)
![代碼優(yōu)化課件_第5頁](http://file4.renrendoc.com/view8/M02/12/1C/wKhkGWba7VeAF27IAAGd4hB5DYY2985.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
優(yōu)化編譯器的組織前端代碼生成器代碼優(yōu)化器變換數(shù)據(jù)流分析控制流分析10.1.1
代碼改進(jìn)變換的原則(1)等價(jià)原則。經(jīng)過優(yōu)化后不應(yīng)改變程序運(yùn)行的結(jié)果。(2)有效原則。使優(yōu)化后所產(chǎn)生的目標(biāo)代碼運(yùn)行時(shí)間較短,占用的存儲空間較小。(3)合算原則。應(yīng)盡可能以較低的代價(jià)取得較好的優(yōu)化效果。10.1
優(yōu)化的概述10.1.2
優(yōu)化的主要種類本節(jié)所用的例子i=m
1;j=n;v=a[n]; (1)i:=m
1while(1){ (2)j:=ndoi=i+1;while(a[i]<v); (3)t1:=4*ndoj=j
1;while(a[j]>v); (4)v:=a[t1]if(i>=j)break; (5)i:=i+1x=a[i];a[i]=a[j];a[j]=x; (6)t2:=4*i} (7)t3:=a[t2]x=a[i];a[i]=a[n];a[n]=x; (8)ift3<vgoto(5)
10.1
優(yōu)化的概述本節(jié)所用的例子i=m
1;j=n;v=a[n]; (9)j:=j
1while(1){ (10)t4:=4*jdoi=i+1;while(a[i]<v); (11)t5:=a[t4] doj=j
1;while(a[j]>v); (12)ift5>vgoto(9)if(i>=j)break; (13)ifi>=jgoto(23)x=a[i];a[i]=a[j];a[j]=x; (14)t6:=4*i} (15)x:=a[t6]x=a[i];a[i]=a[n];a[n]=x; ...
i:=m
1j:=nt1:=4*nv:=a[t1]i:=i+1t2:=4*it3:=a[t2]ift3
<vgoto
B2B1B2j:=j
1t4:=4*jt5:=a[t4]ift5>vgoto
B3ifi>=jgoto
B6B4B3B5B610.1
優(yōu)化的概述(1)公共子表達(dá)式刪除B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*it8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgoto
B210.1
優(yōu)化的概述B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*i
t8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgoto
B210.1
優(yōu)化的概述B5x=a[i];a[i]=a[j];a[j]=x;t6:=4*ix:=a[t6]t7:=4*i
t8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgoto
B2t6:=4*ix:=a[t6]t7:=t6
t8:=4*jt9:=a[t8]a[t7]:=t9t10:=t8a[t8]:=xgoto
B210.1
優(yōu)化的概述(2)復(fù)寫傳播形成為f:=g的賦值叫做復(fù)寫優(yōu)化過程中會大量引入復(fù)寫t6:=4*ix:=a[t6]t7:=4*i
t8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgoto
B2t6:=4*ix:=a[t6]t7:=t6
t8:=4*jt9:=a[t8]a[t7]:=t9t10:=t8a[t10]:=xgoto
B210.1
優(yōu)化的概述(2)復(fù)寫傳播復(fù)寫傳播是在復(fù)寫語句f:=g后,盡可能用g代表f,目的是使某些變量的賦值變?yōu)闊o用t6:=4*ix:=a[t6]t7:=4*i
t8:=4*jt9:=a[t8]a[t7]:=t9t10:=4*ja[t10]:=xgoto
B2t6:=4*ix:=a[t6]t7:=t6
t8:=4*jt9:=a[t8]a[t7]:=t9t10:=t8a[t10]:=a[t6]goto
B2t6:=4*ix:=a[t6]t7:=t6
t8:=4*jt9:=a[t8]a[t6]:=t9t10:=t8a[t8]:=a[t6]goto
B210.1
優(yōu)化的概述(3)刪除無用代碼無用代碼是指計(jì)算的結(jié)果決不被引用的語句一些優(yōu)化變換可能會引起無用代碼x:=t3a[t2]:=t5a[t4]:=t3goto
B2a[t2]:=t5a[t4]:=t3goto
B2x:=t3a[t2]:=t5a[t4]:=xgoto
B210.1
優(yōu)化的概述(4)代碼外提代碼外提是循環(huán)優(yōu)化的一種循環(huán)優(yōu)化的其它重要技術(shù)歸納變量刪除強(qiáng)度削弱例:while(i
<=limit
2)…
變換成 t=limit
2; while(i<=t)…10.1
優(yōu)化的概述(5)強(qiáng)度削弱和歸納變量刪除j和t4的值步伐一致地變化這樣的變量叫做歸納變量在循環(huán)中有多個(gè)歸納變量時(shí),也許只需要留下一個(gè)這個(gè)操作由歸納變量刪除過程來完成對本例可以先做強(qiáng)度削弱它給刪除歸納變量創(chuàng)造機(jī)會j:=j
1t4:=4*jt5:=a[t4]ift5>vgoto
B3B310.2局部優(yōu)化怎樣為三地址語句序列生成目標(biāo)代碼?begin |(1) prod:=0 prod:=0; |(2) i:=1 i:=1; |(3) t1:=4*i dobegin |(4) t2:=a[t1] prod:=prod+a[i]*b[i];|(5) t3:=4*i i:=i+1 |(6) t4:=b[t3] endwhilei<=20 |(7) t5:=t2*t4
end |(8) t6:=prod+t5 |(9) prod:=t6 |(10) t7:=i+1 |(11) i:=t7
|(12) ifi<=20goto(3)10.2局部優(yōu)化10.2.1基本塊基本塊:連續(xù)的語句序列,控制流從它的開始進(jìn)入,并從它的末尾離開再用有向邊表示基本塊之間的控制流信息,就能得到程序的流圖10.2局部優(yōu)化三地址語句序列的劃分基本塊首先確定所有的入口語句序列的第一個(gè)語句是入口語句能由條件轉(zhuǎn)移語句或無條件轉(zhuǎn)移語句轉(zhuǎn)到的語句是入口語句緊跟在條件轉(zhuǎn)移語句或無條件轉(zhuǎn)移語句后面的語句是入口語句每個(gè)入口語句到下一個(gè)入口語句之前的語句序列構(gòu)成一個(gè)基本塊
10.2局部優(yōu)化(1) prod:=0(2) i:=1(3) t1:=4*i(4) t2:=a[t1](5) t3:=4*i(6) t4:=b[t3](7) t5:=t2*t4
(8) t6:=prod+t5(9) prod:=t6(10) t7:=i+1(11) i:=t7(12) ifi<=20goto(3)(1)prod:=0(2)i:=1(3)t1:=4*i(4)t2:=a[t1](5)t3:=4*I(6)t4:=b[t3](7)t5:=t2*t4(8)t6:=prod+t5(9)prod:=t6(10)t7:=i+1(11)i:=t7(12)ifi<=20goto(3)B1B210.2局部優(yōu)化基本塊的變換三地址語句x:=y+z引用y和z并對x定值一個(gè)名字的值在基本塊的某一點(diǎn)以后還要引用的話,我們說這個(gè)名字在該點(diǎn)是活躍的10.2局部優(yōu)化合并已知量 a:=2......(中間沒有改變a的值) b:=a*4 //可以變換為b:=8臨時(shí)變量改名10.2局部優(yōu)化交換相鄰的獨(dú)立語句 t1:=b
+c t2:=x
+y t2:=x
+y t1:=b
+c當(dāng)且僅當(dāng)x和y都不是t1,b和c都不是t2
代數(shù)變換 x:=x+0 可以刪除
x:=x*1 可以刪除
x:=y**2 改成x:=y*y有沒有基本塊優(yōu)化的形式化方法?10.2局部優(yōu)化10.2.2基本塊的DAG表示1)圖的葉結(jié)點(diǎn)以標(biāo)識符或常數(shù)作為標(biāo)記 2)圖的內(nèi)部結(jié)點(diǎn)以一運(yùn)算符作為標(biāo)記,表示該結(jié)點(diǎn)是應(yīng)用該運(yùn)算符對其后繼結(jié)點(diǎn)所代表的值進(jìn)行運(yùn)算的結(jié)果3)各結(jié)點(diǎn)可能附加一個(gè)或多個(gè)標(biāo)識符,表示這些變量具有該結(jié)點(diǎn)所代表的值算法演示10.3循環(huán)優(yōu)化循環(huán)是程序中那些可能反復(fù)執(zhí)行的代碼序列。對循環(huán)中的代碼,可以實(shí)行代碼外提、強(qiáng)度削弱和刪除歸納變量等優(yōu)化10.3.l代碼外提10.3.2強(qiáng)度削弱
10.3.3刪除歸納變量代碼外提將循環(huán)不變語句提到循環(huán)的前置結(jié)點(diǎn)中并不是所有的循環(huán)不變語句都可以外提我們討論三個(gè)條件(并非是必要條件)10.3循環(huán)優(yōu)化語句s:x:=y+z可以外提的條件含s的塊是循環(huán)所有出口結(jié)點(diǎn)的必經(jīng)結(jié)點(diǎn)i:=1ifu<vgoto
B3v:=v
1ifu<=20goto
B5i:=2u:=u+1j:=iB5B4B3B2B110.3循環(huán)優(yōu)化10.3循環(huán)優(yōu)化語句s:x:=y+z可以外提的條件循環(huán)中沒有其它語句對x定值考查B2-B3-B4-B2-B4-B5i:=3外提,j=2不外提,i=3i:=1i:=3ifu<vgoto
B3v:=v
1ifu<=20goto
B5i:=2u:=u+1j:=iB5B4B3B2B110.3循環(huán)優(yōu)化語句s:x:=y+z可以外提的條件x的其它定值都不能到達(dá)循環(huán)中x的引用考查B4的循環(huán)不變運(yùn)算i:=2s是出口必經(jīng)的循環(huán)中唯一的i定值點(diǎn)x=0y=2B2B3B4B2B4B5i:=1ifx<ygoto
B3i:=2y:=y
1ify<=0goto
B5a:=i+1x:=x+1j:=aB5B4B3B2B110.3循環(huán)優(yōu)化強(qiáng)度削弱:執(zhí)行時(shí)間較長的運(yùn)算替換為執(zhí)行時(shí)間較短的運(yùn)算13)i:=i+14)8)計(jì)算的t2,t6是i的線性函數(shù)強(qiáng)度削弱的結(jié)果10.1610.16中對t3,t7進(jìn)行強(qiáng)度削弱1)i:=1B1B2’3)t1:=2*j6)t4:=addr(A)-117)t5:=2*j10)t8:=addr(A)-114)t2:=10*i5)t3:=t2+t18)t6:=10*i9)t7:=t6+t511)t9:=t8[t7]12)t4[t3]:=t9+113)i:=i+114)gotoB2B32)ifi>10goto15B215)......10.3循環(huán)優(yōu)化歸納變量刪除循環(huán)歸納變量:在循環(huán)中,其值的每次改變都增加或減少某個(gè)固定的常量基本歸納變量:在循環(huán)中只有一個(gè)形如i:=i
c的i,其中c是常量其
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度解除互聯(lián)網(wǎng)廣告合作合同
- 施工現(xiàn)場卸料風(fēng)險(xiǎn)點(diǎn)告知卡
- 職場技能提升的家庭作業(yè)實(shí)踐案例
- 家庭健康教育從理論到實(shí)踐的探索
- 科技展會中的人工智能與用戶體驗(yàn)研究報(bào)告
- 二手房銷售合同樣本大全
- 臨時(shí)倉儲設(shè)備租賃合同2025
- 二手房買賣合同補(bǔ)充協(xié)議書范本
- 產(chǎn)品銷售獨(dú)家代理合同樣本
- 中介代理辦公租賃合同
- 小小銀行家-兒童銀行知識、理財(cái)知識培訓(xùn)
- 物業(yè)公司縮減人員方案范本
- 河湖保護(hù)主題班會課件
- 機(jī)械基礎(chǔ)知識競賽題庫附答案(100題)
- 2022年上學(xué)期八年級期末考試數(shù)學(xué)試卷
- 閱讀理解特訓(xùn)卷-英語四年級上冊譯林版三起含答案
- 國庫集中支付培訓(xùn)班資料-國庫集中支付制度及業(yè)務(wù)操作教學(xué)課件
- 屋面及防水工程施工(第二版)PPT完整全套教學(xué)課件
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫含答案解析
- 2023年高一物理期末考試卷(人教版)
- 2023版押品考試題庫必考點(diǎn)含答案
評論
0/150
提交評論