[問題] 想讓我的function加快

看板C_and_CPP (C/C++)作者 (123)時間14年前 (2012/05/15 13:49), 編輯推噓1(1017)
留言18則, 5人參與, 最新討論串1/1
[36m開發平台(Platform): (Ex: VC++, GCC, Linux, ...) *完全沒使用額外的函式庫 CV::TFT=0; for(m=0 ; m<20 ; m++) CV::machineTime[m]=0; for( n=0 ; n<50 ; n++){ CV::machineTime[0]+=CV::FSP_Instance[A[n]][0]; for( m=1 ; m<20 ; m++){ if(CV::machineTime[m-1]<=CV::machineTime[m]) CV::machineTime[m]+=CV::FSP_Instance[A[n]][m]; else CV::machineTime[m]=CV::machineTime[m-1]+CV::FSP_Instance[A[n]][m]; } //end for CV::TFT+=CV::machineTime[20-1]; } //end for B[0]=CV::machineTime[20-1]; B[1]=CV::TFT; 這是我一個function裡的式子,由於要call這function非常多次導致時間便很慢 有啥方法可以加快這式子運算呢? 我已試過將for迴圈改成for(m=20 ; m>=0 ; m--)和把這式子用template表示 都無法加快這運算..能否指點一下小弟 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.14.143

05/15 13:56, , 1F
有二個loop index 都用 m ??
05/15 13:56, 1F

05/15 14:00, , 2F
開多個thread, loop unroll之類的吧 如果CPU有多核心的話
05/15 14:00, 2F

05/15 14:09, , 3F
我雙核心 有用兩個thread去跑過 時間竟然多了一點@@
05/15 14:09, 3F

05/15 14:13, , 4F
multithread不一定會比較快,要加上等待跟創造thread
05/15 14:13, 4F

05/15 14:13, , 5F
的時間
05/15 14:13, 5F

05/15 14:15, , 6F
不然就是你這個有沒有規律性?看能不能用建表法
05/15 14:15, 6F

05/15 14:16, , 7F
建表法?
05/15 14:16, 7F

05/15 14:16, , 8F
真的跟1F說的一樣,怎麼最外面跟最裡面的都是用m
05/15 14:16, 8F

05/15 14:18, , 9F
最外面的m只是用來初始
05/15 14:18, 9F
※ 編輯: gn00618777 來自: 140.120.14.143 (05/15 14:19)

05/15 14:20, , 10F
我縮排縮錯了^^" 讓你們誤會了
05/15 14:20, 10F

05/15 14:20, , 11F
最外面的m與裡面無關
05/15 14:20, 11F

05/15 14:22, , 12F
目前我有到一個新的演算法 用空間換取時間來加快
05/15 14:22, 12F

05/15 14:22, , 13F
只是我想說還有沒有不用想新的演算法的方法來加快
05/15 14:22, 13F

05/15 15:04, , 14F
可以把專案設定的 compiler 最佳化開到最大試試看
05/15 15:04, 14F

05/15 15:05, , 15F
這就是條compiler參數嗎? 我也想是這個 請問要如何用?
05/15 15:05, 15F

05/15 15:08, , 16F
開發環境為VC++
05/15 15:08, 16F

05/15 16:07, , 17F
..原來我已經調release模式 用最快速度加速 還是跑這樣
05/15 16:07, 17F

05/15 16:07, , 18F
還有啥方法阿= =
05/15 16:07, 18F
文章代碼(AID): #1FiUvhrP (C_and_CPP)
文章代碼(AID): #1FiUvhrP (C_and_CPP)