C6x的編譯器提供了最佳化的指令,如在編譯時加上-o3的de參can數shu,就jiu可ke以yi用yong軟ruan件jian來lai分fen析xi程cheng序xu員yuan的de程cheng序xu是shi否fou有you可ke以yi改gai進jin的de地di方fang。如ru此ci一yi來lai,在zai產chan生sheng組zu語yu的de彙hui編bian語yu言yan檔dang案an之zhi前qian,編bian譯yi器qi就jiu會hui對dui程cheng序xu員yuan所suo寫xie的deC語(yu)言(yan)程(cheng)序(xu)不(bu)斷(duan)的(de)進(jin)行(xing)編(bian)譯(yi),也(ye)會(hui)對(dui)程(cheng)序(xu)中(zhong)的(de)循(xun)環(huan)部(bu)份(fen)重(zhong)新(xin)編(bian)排(pai),產(chan)生(sheng)另(ling)一(yi)較(jiao)有(you)效(xiao)率(lv)的(de)核(he)心(xin)循(xun)環(huan),以(yi)最(zui)有(you)效(xiao)率(lv)的(de)方(fang)式(shi)重(zhong)新(xin)編(bian)排(pai)程(cheng)序(xu),來(lai)加(jia)快(kuai)程(cheng)序(xu)速(su)度(du)。

下麵分形科技就為在家介紹一下C語言程序編輯中快程序速度的方法
方法一、把浮點運算改成定點運算
因為C6x DSPbanbingbuzhichifudianyunsuan,danwomendeyuanshichengxudaimashifudianyunsuandegeshi,suoyibixugaichengdingdianyunsuan,xiugaihoudezhixingsuduyehuijiakuaihenduo。womenkeyicaiyongQ-format規格來表示浮點運算。
Q-format的相關原理是:定點DSP使用固定的小數點來表示小數部份的數字,這也造成了使用上的限製,為了要分類不同範圍的小數點,我們必須使用Q-format的格式。
方法二、建立表格(table)
原來程序的設計是除了要讀AAC的檔案外,在譯碼時,還要再另外讀取一些C語言程序代碼的內容再做計算,如讀取一些數值做sin、cos、exp的de運yun算suan,但dan是shi為wei了le加jia快kuai程cheng序xu的de執zhi行xing速su度du,故gu將jiang這zhe這zhe些xie運yun算suan的de結jie果guo建jian成cheng表biao格ge,內nei建jian在zai程cheng序xu中zhong,可ke以yi不bu必bi再zai做zuo額e外wai的de計ji算suan動dong做zuo,以yi加jia速su程cheng序xu。
方法三、減短程序的長度
1、去除Debug的功能
原本程序在Debug的階段時,就加了許多用來偵測錯誤的部份,程序Debug完後,已經沒有錯誤發生,所以就可以把這些部份給去除,以減少程序的長度,也可以減少程序執行時的時脈數,加快程序的速度。
2、去除計算時脈(clock)功能
原本程序可以計算執行程序所需的時脈數,我們也可以把這些部份給去除,如果有需要計算時脈時,我們可以用C6x的工具軟件來作,功能更強大。
方法四、減少I/O 過程
原本在做譯碼的動作時,是先讀取AAC檔案的一部份做譯碼,譯碼完成後再讀取下一部份,再做譯碼。由於C6x的板子跟PC做檔案讀取時相當的緩慢,讀取的動作占了大部份的時間,所以就將程序改成先將AAC檔案全部讀到C6x的內存中,再做譯碼。或是將AAC建成表格(約1MB),以避免DSP板上的內存不足。
方法五、減少子程序的呼叫
在呼叫子程序時,必須先將緩存器的內容放到堆棧(stack)zhong,ercongzichengxufanhuishi,yeyaojiangzhexiehuancunqiyuanbendeneirongcongduizhanzhongquchulai。danshiyouxiezichengxudechangduhenduan,erqiebeihujiaodecishuyouhenduo,wangwangjigeshimaijiukeyiwanchengquelangfeishijianzaicunquduizhandeneirongshang,suoyigancuijiangzhexiehenduandezichengxuzhijiexiezaizhuchengxudangzhong,yijianshaoshimaishu。
方法六、寫彙編語言
雖然由C語yu言yan所suo編bian譯yi出chu來lai的de彙hui編bian語yu言yan可ke以yi正zheng確que無wu誤wu的de執zhi行xing,但dan是shi這zhe個ge彙hui編bian語yu言yan卻que不bu是shi最zui有you效xiao率lv的de寫xie法fa,所suo以yi為wei了le增zeng加jia程cheng序xu的de效xiao率lv,於yu是shi在zai某mou些xie地di方fang,例li如ru一yi些xie被bei呼hu叫jiao很hen多duo次ci且qie程cheng序xu代dai碼ma不bu長chang的de函han式shi(function),必須改以自己動手寫彙編語言來取代。
方法七、利用平行處理的觀念
C6x是一顆功能強大的處理器,它CPU的(de)內(nei)部(bu)提(ti)供(gong)了(le)八(ba)個(ge)可(ke)以(yi)執(zhi)行(xing)不(bu)同(tong)指(zhi)令(ling)的(de)單(dan)元(yuan),也(ye)就(jiu)是(shi)說(shuo)最(zui)多(duo)可(ke)以(yi)同(tong)時(shi)處(chu)理(li)八(ba)個(ge)指(zhi)令(ling)。所(suo)以(yi)如(ru)果(guo)我(wo)們(men)可(ke)以(yi)用(yong)它(ta)來(lai)作(zuo)平(ping)行(xing)處(chu)理(li),我(wo)們(men)就(jiu)可(ke)以(yi)大(da)大(da)的(de)縮(suo)短(duan)程(cheng)序(xu)執(zhi)行(xing)的(de)時(shi)間(jian),最(zui)有(you)效(xiao)率(lv)的(de)來(lai)利(li)用(yong)它(ta)來(lai)作(zuo)解(jie)碼(碼)的(de)動(dong)作(zuo)。












