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

請問 加法跟乘法

尚未結案
yungfan
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-05 15:47:41 IP:220.142.xxx.xxx 未訂閱
各位大大 我原本的程式如下:
 
 double sum,A[32],filter[32][32]
 for(i=0;i<32;i  ){
    sum=0;
    for(k=0;k<32;k  ){
       sum  = A[k]*filter[i][k];
    }
 }
因為k在0~31中對稱,所以可以把A陣列先前後相加或相減再乘上filter,而程式更改如下:
   double sum1,sum2,A[32],filter[32][32] 
   for(i=0;i<32;i=i 2){
       sum1=0;
       sum2=0;
       for(k=0;k<16;k  ){
          sum1 =(A[k] A[31-k])*filter[i][k];
          sum2 =(A[k]-A[31-k])*filter[i 1][k];
       }
    }
不管累加的話: 程式一:32x32次的乘法 程式二:16x32次的乘法及16x32次的加法 結果執行的速度是程式一的比較快,想請問一下,為什麼加法會比乘法來的慢呢??
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-05 22:42:42 IP:210.66.xxx.xxx 未訂閱
有沒試著將二個原碼的順序調換過!?或則拿掉計算的程式碼跑過!? 學而時習之不亦樂乎!
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-06 00:05:43 IP:211.76.xxx.xxx 未訂閱
您的程式1:應有  double 運算: 32x32 次的乘及 32x32 次的加(sum+=) int    運算: 32x32 次的加(k++) + 32 次的加(i++) 共 32*33=1056 次加 int比較運算: 32x33 次(k<32) + 33 次(i<32) 共 33*33 次比較 程式2:應有 double 運算: 16x32 次的乘及 32x32 次的加(sum = 及 A[] -A[]) int 運算:加減 16x16 次(k ) + 16x16x3 次([31-k],[i 1]) + 16 次(i 2) 共 1040 次 int比較運算: 16x17 次(k<16) + 17 次(i<32) 共 17*17 次比較 當然,如果還要再細分也可以 我按您的程式實測,以 [ class="code"> // 程式1 DWORD START=GetTickCount(); for(int i=0;i<3200;i ){ sum=0; for(int k=0;k<3200;k ){ sum = A[k]*filter[i][k]; } } DWORD DIFF=GetTickCount()-START;
 // 程式2
  DWORD START=GetTickCount();
   for(int i=0;i<3200;i=i 2){
       sum1=0;
       sum2=0;
       for(int k=0;k<1600;k  ){
          sum1 =(A[k] A[3119-k])*filter[i][k];
          sum2 =(A[k]-A[3119-k])*filter[i 1][k];
       }
    }
  DWORD DIFF=GetTickCount()-START;
結果是: 程式1: 125~150 ms 程式2: 47 ~ 62 ms 所以是程式 2 比較快。這樣的結果也比較合理與乘加數正比。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
系統時間:2024-09-07 3:13:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!