由于C語(yǔ)言編譯出來(lái)的程序,不是最有效率的匯編語(yǔ)言,它沒(méi)有辦法達(dá)到實(shí)時(shí)播放。所以程序員為了要使程序執(zhí)行的速度能夠加快,以好化的狀態(tài)使其能夠達(dá)到實(shí)時(shí)播放的速度。C語(yǔ)言編譯出來(lái)的程序,不是最有效率的匯編語(yǔ)言,它沒(méi)有辦法達(dá)到實(shí)時(shí)播放。所以程序員為了要使程序執(zhí)行的速度能夠加快,以好化的狀態(tài)使其能夠達(dá)到實(shí)時(shí)播放的速度。
C6x的編譯器提供了好化的指令,如在編譯時(shí)加上-o3的參數(shù),就可以用軟件來(lái)分析程序員的程序是否有可以改進(jìn)的地方。如此一來(lái),在產(chǎn)生組語(yǔ)的匯編語(yǔ)言檔案之前,編譯器就會(huì)對(duì)程序員所寫(xiě)的C語(yǔ)言程序不斷的進(jìn)行編譯,也會(huì)對(duì)程序中的循環(huán)部份重新編排,產(chǎn)生另一較有效率的核心循環(huán),以最有效率的方式重新編排程序,來(lái)加快程序速度。
下面創(chuàng)新互聯(lián)就為在家介紹一下C語(yǔ)言程序編輯中快程序速度的方法
方法一、把浮點(diǎn)運(yùn)算改成定點(diǎn)運(yùn)算
因?yàn)镃6x DSP板并不支持浮點(diǎn)運(yùn)算,但我們的原始程序代碼是浮點(diǎn)運(yùn)算的格式,所以必須改成定點(diǎn)運(yùn)算,修改后的執(zhí)行速度也會(huì)加快很多。我們可以采用Q-format規(guī)格來(lái)表示浮點(diǎn)運(yùn)算。
Q-format的相關(guān)原理是:定點(diǎn)DSP使用固定的小數(shù)點(diǎn)來(lái)表示小數(shù)部份的數(shù)字,這也造成了使用上的限制,為了要分類(lèi)不同范圍的小數(shù)點(diǎn),我們必須使用Q-format的格式。
方法二、建立表格(table)原來(lái)程序的設(shè)計(jì)是除了要讀AAC的檔案外,在譯碼時(shí),還要再另外讀取一些C語(yǔ)言程序代碼的內(nèi)容再做計(jì)算,如讀取一些數(shù)值做sin、cos、exp的運(yùn)算,但是為了加快程序的執(zhí)行速度,故將這這些運(yùn)算的結(jié)果建成表格,內(nèi)建在程序中,可以不必再做額外的計(jì)算動(dòng)做,以加速程序。
方法三、減短程序的長(zhǎng)度1、去除Debug的功能原本程序在Debug的階段時(shí),就加了許多用來(lái)偵測(cè)錯(cuò)誤的部份,程序Debug完后,已經(jīng)沒(méi)有錯(cuò)誤發(fā)生,所以就可以把這些部份給去除,以減少程序的長(zhǎng)度,也可以減少程序執(zhí)行時(shí)的時(shí)脈數(shù),加快程序的速度。
2、去除計(jì)算時(shí)脈(clock)功能原本程序可以計(jì)算執(zhí)行程序所需的時(shí)脈數(shù),我們也可以把這些部份給去除,如果有需要計(jì)算時(shí)脈時(shí),我們可以用C6x的工具軟件來(lái)作,功能更強(qiáng)大。
方法四、減少I(mǎi)/O 過(guò)程原本在做譯碼的動(dòng)作時(shí),是先讀取AAC檔案的一部份做譯碼,譯碼完成后再讀取下一部份,再做譯碼。由于C6x的板子跟PC做檔案讀取時(shí)相當(dāng)?shù)木徛?,讀取的動(dòng)作占了大部份的時(shí)間,所以就將程序改成先將AAC檔案全部讀到C6x的內(nèi)存中,再做譯碼?;蚴菍AC建成表格(約1MB),以避免DSP板上的內(nèi)存不足。
方法五、減少子程序的呼叫在呼叫子程序時(shí),必須先將緩存器的內(nèi)容放到堆棧(stack)中,而從子程序返回時(shí),也要將這些緩存器原本的內(nèi)容從堆棧中取出來(lái)。但是有些子程序的長(zhǎng)度很短,而且被呼叫的次數(shù)又很多,往往幾個(gè)時(shí)脈就可以完成卻浪費(fèi)時(shí)間在存取堆棧的內(nèi)容上,所以干脆將這些很短的子程序直接寫(xiě)在主程序當(dāng)中,以減少時(shí)脈數(shù)。
方法六、寫(xiě)匯編語(yǔ)言雖然由C語(yǔ)言所編譯出來(lái)的匯編語(yǔ)言可以正確無(wú)誤的執(zhí)行,但是這個(gè)匯編語(yǔ)言卻不是最有效率的寫(xiě)法,所以為了增加程序的效率,于是在某些地方,例如一些被呼叫很多次且程序代碼不長(zhǎng)的函式(function),必須改以自己動(dòng)手寫(xiě)匯編語(yǔ)言來(lái)取代。
方法七、利用平行處理的觀(guān)念C6x是一顆功能強(qiáng)大的處理器,它CPU的內(nèi)部提供了八個(gè)可以執(zhí)行不同指令的單元,也就是說(shuō)最多可以同時(shí)處理八個(gè)指令。所以如果我們可以用它來(lái)作平行處理,我們就可以大大的縮短程序執(zhí)行的時(shí)間,最有效率的來(lái)利用它來(lái)作解碼的動(dòng)作。
文章題目:C語(yǔ)言程序編輯中快程序速度的方法
URL地址:http://aaarwkj.com/news12/151212.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站導(dǎo)航、做網(wǎng)站、虛擬主機(jī)、網(wǎng)站策劃
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)