全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:902
推到 Plurk!
推到 Facebook!

程式最佳化~~幫個忙!!

尚未結案
yungfan
一般會員


發表:25
回覆:13
積分:7
註冊:2003-12-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-20 02:00:03 IP:218.165.xxx.xxx 未訂閱
我想請問一下各位大大,這段程式是否有大幅提升執行速度的改進方法,煩請給我一點建議好嗎…非常感謝…^^
 
void inv_mdct(in, out, block_type)
const double in[18];
double out[36];
int block_type;
{                                                                  
int     k,i,m,N,p;
double  tmp[12],sum;           
static  int init=0;          
int sz;
const double win[4][36]={
{0.04362,0.13053,.....,0.13053,0.43619},/*type0*/
{0.04362,0.13053,.....,0.00000,0.00000},/*type1*/
{0.13053,0.38268,.....,0.00000,0.00000},/*type2*/
{0.00000,0.00000,.....,0.13053,0.04362}};/*type3*/    const double COS[144]={0.00000,0.99905,....,0.99619,0.99619,0.99905};      for(i=0;i<36;i  ) { out[i]=0;  }      if(block_type == 2){
     N=12;
     for(i=0;i<3;i  ){
       for(p= 0;p     
        
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-22 15:12:44 IP:61.222.xxx.xxx 未訂閱
Hi yungfan: 請參考 http://delphi.ktop.com.tw/topic.php?topic_id=19023 希望對您的最佳化有幫助^_^ -------------------------- ~天下本無事 庸人自擾之~
Albertz
初階會員


發表:2
回覆:57
積分:31
註冊:2002-09-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-22 15:38:32 IP:211.20.xxx.xxx 未訂閱
一般碰到這種問題, 我會建議先用 Intel(R) VTune Performance Analyzer 先看 bottleneck 是在哪裡, 然後再對該部分作最佳化的 動作.  以你的 code 看起來, 問題可能是出在
         for(m=0;m
有沒有考慮把 cos 作成 table, 使用查表 內插法的方式去做.可以節省
一些時間.     
        
kuanll
一般會員


發表:5
回覆:6
積分:2
註冊:2002-09-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-22 15:39:57 IP:140.127.xxx.xxx 未訂閱
大致看一下程式碼,您應該是想做DCT運算吧?? 目前我採用的方法是查表法,也就是把可能會運算出來的值先跑出來存在陣列裡,等有需要的時候再抓出來..或許會花一點空間,不過效果比直接算還要快!! 或是採用Foward-DCT也會比較快
yungfan
一般會員


發表:25
回覆:13
積分:7
註冊:2003-12-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-22 23:42:54 IP:218.165.xxx.xxx 未訂閱
那請問一下…我在else的cos已經建了一個COS的表…所以在這部份已經沒有更快的空間了嗎?? 謝謝啦!!^^
Albertz
初階會員


發表:2
回覆:57
積分:31
註冊:2002-09-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-23 09:11:52 IP:211.20.xxx.xxx 未訂閱
引言: 那請問一下…我在else的cos已經建了一個COS的表…所以在這部份已經沒有更快的空間了嗎??
 else{
     N=36;
     for(p= 0;p
上面這段 code, 大部分都是使用 based indexed addressing 對 memory 
做讀寫的動作, 最佳化的效果可能不大. 
不過你倒是可以考慮 kuanll 兄的建議.採用查表法. 會省去一些數學運算
所花費的時間.     
        
系統時間:2024-11-23 12:56:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!