觸屏版
全國服務(wù)熱線:0571-87205688
登錄
注冊
客戶中心
關(guān)注云客
編譯流程與處理器選項,現(xiàn)在繼續(xù)講解程序優(yōu)化。在二三十年前人們剛開始使用C語言代替匯編進行開發(fā)的時候,因為當(dāng)初的處理器/控制器性能很弱,而編譯器的能力也有限,因而形成了一些C語言編程效率不高的印象。但是今天的硬件性能已經(jīng)非常強大,而編譯器的能力也是日新月異,假若大家不熟練掌握匯編編程中的一些關(guān)鍵技術(shù),編寫的匯編代碼的效率已經(jīng)很難超過編譯器從C語言轉(zhuǎn)換出來的匯編代碼了。
假若大家使用C語言進行編程的話,編譯器除了可以把大家的加減乘除這樣的操作轉(zhuǎn)換為ADD、MPY以及相關(guān)的尋址、寄存器操作外,還可以在編譯產(chǎn)生匯編代碼的過程中進行不同程度的優(yōu)化。優(yōu)化的過程要根據(jù)器件的特點與指令集等進行有針對性的配置,因而在不同的器件上同一段C代碼優(yōu)化產(chǎn)生的結(jié)果可能不一樣,但是其基本思想都是一致的;甚至是不同公司的編譯器,在優(yōu)化選項和優(yōu)化效果上面也是基本一致的。在CCS軟件的編譯器中,大家可以使用的基本的優(yōu)化級別有5級,如表1所示。需要注意的是,別名就是大家在編譯器選項中實際使用的名字,因為字體的原因,看起來可能會有混淆,以-O0為例,其中的第一個是字母O是大寫的字母0,表示優(yōu)化Optimization,而不是阿拉伯?dāng)?shù)字的0;第二個才是是阿拉伯?dāng)?shù)字中的零,用數(shù)字表示優(yōu)化的序號或者說優(yōu)化的程度。
根據(jù)Html頁面的seo網(wǎng)站優(yōu)化中基礎(chǔ)性問題需要,大家可以選擇需要的優(yōu)化級別,例如可以選擇優(yōu)化代碼的尺寸,從而減小代碼占用的存儲器空間;一般情況下使用-O2或者-O3可以實現(xiàn)在代碼運行速度、代碼占用的存儲器空間和編譯速度幾個因素之間的最優(yōu)化。但是優(yōu)化也是有一定的代價的,首先編譯的時間會隨著優(yōu)化級別的提高而增加;其次假若大家的代碼不夠嚴謹,可能會產(chǎn)生意外的結(jié)果,例如某些看起來沒用的變量直接被編譯器給“忽視”了,但是大家本來保留它可能是有目的的,例如用來做為調(diào)試用的變量,結(jié)果它被優(yōu)化掉了而失去了意義,這時大家就需要使用一些特殊的C語言關(guān)鍵字告訴編譯器,這個變量用在這里是有其它目的的,不能把它給優(yōu)化掉,等等;這些以后可以詳解。
關(guān)于優(yōu)化的更多細節(jié),大家可以參考一些有關(guān)高效編程的書,因為編譯器假若可以對代碼進行優(yōu)化,假若大家的代碼寫的太爛,編譯器估計也要吐血了。
在上面的網(wǎng)頁設(shè)計中值得注意的seo優(yōu)化細節(jié)文章里,大家提到了DSP編程中程序優(yōu)化最常使用到的選項問題,主要提到的幾個選項包括-O1、-O2、-O3、-O4等等。固然大家是以DSP為例進行說明的,但是對于其它的處理器,例如ARM、CPU、一些高級的單片機如MSP430、PIC等等和一些編譯環(huán)境,例如Keil、Xilinx SDK等,它們使用的一般的優(yōu)化選項和基本內(nèi)容也是大同小異的,即同樣的優(yōu)化級別,優(yōu)化的目的都是基本一致的。
這些都是基本的操作,假若大家的目的僅僅是優(yōu)化代碼性能或者尺寸的話。假若大家想了解優(yōu)化過程中產(chǎn)生和使用的更多信息的話,對于DSP本身而言,它的一些其它特性對于程序的運行性能也是非常關(guān)鍵的,此時在基本的優(yōu)化選項基礎(chǔ)上,大家又要注意一下高級的優(yōu)化選項的影響。例如,某些匯編指令在做諸如FFT變化的時候能夠成倍的提高效率,因而開啟高級優(yōu)化選項使得編譯器有針對性地生成相關(guān)的指令就非常重要。
評論(0人參與,0條評論)
發(fā)布評論
最新評論