時(shí)間:2008-03-24 15:06:00來源:mahaiyan
?。?)減少或避免執(zhí)行耗時(shí)的操作
應(yīng)用程序的大量運(yùn)行時(shí)問通?;ㄙM(fèi)在關(guān)鍵程序模塊,關(guān)鍵模塊往往包含循環(huán)或嵌套循環(huán)。減少循環(huán)中耗時(shí)的操作,可以提高程序的執(zhí)行速度。常見的耗時(shí)操作有:輸入/輸出操作、文件訪問、圖形界面操作和系統(tǒng)調(diào)用等。其中,如果無法避免文件的讀/寫,那么對(duì)文件的訪問將是影響程序運(yùn)行速度的一大因素。提高文件訪問速度的方法有兩種:一種是采用內(nèi)存映射文件;另一種是使用內(nèi)存緩存。
?。?)switch語句用法的優(yōu)化
編程時(shí),對(duì)case值按照可能性排序,將最可能發(fā)生的情況放在第一個(gè),最不可能的情況放在最后一個(gè),可以提高switch語句塊的執(zhí)行速度。
?。?)循環(huán)體的優(yōu)化
循環(huán)體是程序設(shè)計(jì)和優(yōu)化的重點(diǎn),對(duì)于一些不需要循環(huán)變量參加運(yùn)算的模塊,可以把它放到循環(huán)的外面。對(duì)于次數(shù)固定的循環(huán)體,for循環(huán)比while循環(huán)效率更高,減計(jì)數(shù)循環(huán)比增計(jì)數(shù)循環(huán)速度快。例如:
實(shí)際運(yùn)行時(shí),每次循環(huán)需要在循環(huán)體外加兩條指令:一條減法指令(減少循環(huán)計(jì)數(shù)值)和一條條件分支指令。這些指令稱為"循環(huán)開銷"。在ARM處理器上,減法指令需要1個(gè)周期,條件分支指令需要3個(gè)周期,這樣每個(gè)循環(huán)另加了4個(gè)周期的開銷??梢圆捎醚h(huán)展開的方法來提高循環(huán)運(yùn)行的速度,即:重復(fù)循環(huán)主題多次,并按同樣的比例減少循環(huán)次數(shù)來減小循環(huán)的開銷,以增加代碼尺寸。來換取程序的運(yùn)行速度。。
(7)函數(shù)調(diào)用
高效的調(diào)用函數(shù),盡量限制使用函數(shù)的參數(shù)個(gè)數(shù),不要超過4個(gè)。ARM調(diào)用時(shí),4個(gè)以下的形參通過寄存器傳遞,第5個(gè)以上的形參通過存儲(chǔ)器棧傳遞。如果有更多的參數(shù)調(diào)用,則可將相關(guān)的參數(shù)組織在一個(gè)結(jié)構(gòu)體內(nèi),用傳遞結(jié)構(gòu)體指針來代替參數(shù)。
?。?)內(nèi)聯(lián)函數(shù)和內(nèi)嵌匯編
對(duì)性能影響大的重要函數(shù)可以使用關(guān)鍵字_inline內(nèi)聯(lián),會(huì)省去調(diào)用函數(shù)的開銷,負(fù)面影響是增加了代碼尺寸。程序中對(duì)時(shí)間要求苛刻的部分可以用內(nèi)嵌匯編來編寫,通??梢詭硭俣壬系娘@著提高。
(9)查表代替計(jì)算
在程序中盡量不進(jìn)行非常復(fù)雜的運(yùn)算,如浮點(diǎn)數(shù)的開方。對(duì)于這些消耗時(shí)間和資源的運(yùn)算,可以采用空間換取時(shí)間的方法。預(yù)先將函數(shù)值計(jì)算出來,置于程序存儲(chǔ)區(qū)中,以后程序運(yùn)行時(shí)直接查表即可,減小了程序執(zhí)行過程中重復(fù)計(jì)算的工作量。
?。?0)使用針對(duì)硬件優(yōu)化的函數(shù)庫
Intel公司為XScale處理器設(shè)計(jì)的GPP(Graphics Performance Primitives library)/IPP(Integrated Perform-ance Primitives library)庫,針對(duì)多媒體處理、圖形處理和數(shù)值運(yùn)算的一些典型操作和算法進(jìn)行了手工優(yōu)化,可以很好地發(fā)揮XScale硬件的計(jì)算潛能,達(dá)到很高的執(zhí)行效率。
?。?1)利用硬件特性
為了提高程序的運(yùn)行效率,要充分利用硬件特性來減小其運(yùn)行開銷,例如減少中斷次數(shù)、利用DMA傳輸方式等。
CPU對(duì)各種存儲(chǔ)器的訪問速度排序依次為:CPU內(nèi)部RAM>外部同步RAM>外部異步RAM>Flash/ROM。對(duì)于已經(jīng)燒錄在Flash或ROM中的程序代碼,如果讓CPU直接從中讀取代碼執(zhí)行,運(yùn)行速度較慢,則可在系統(tǒng)啟動(dòng)后將Flash或ROM中的目標(biāo)代碼拷貝至RAM中后執(zhí)行,以提高程序的運(yùn)行速度。
4 結(jié)論
嵌入式程序的性能優(yōu)化與軟件的開發(fā)周期、開發(fā)成本、軟件的可讀性之聞通常存在矛盾。
要權(quán)衡利弊,作出折中的選擇。將算法和數(shù)據(jù)結(jié)構(gòu)優(yōu)化作為首選優(yōu)化技術(shù);然后根據(jù)功能、性能差異和投資預(yù)算等因素選擇高效的編譯器、系統(tǒng)運(yùn)行庫和圖形庫;使用性能監(jiān)測工具偵測占主要運(yùn)行時(shí)間的程序熱點(diǎn),采用代碼優(yōu)化手段對(duì)其進(jìn)行優(yōu)化;最后使用高效的編譯器進(jìn)行編譯優(yōu)化,從而得到高質(zhì)量的代碼。標(biāo)簽:
傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動(dòng)網(wǎng)(www.wangxinlc.cn)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>2025-10-31
勇梅機(jī)械液壓閘門給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價(jià)比王者」NK290M普及型數(shù)控...
2025-10-09
2025-09-23