[問題] 向量元素累加

看板C_and_CPP作者 (CDMA)時間14年前 (2011/11/25 00:41), 編輯推噓5(5022)
留言27則, 9人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev-c++ 問題(Question): 一個向量內所有整數元素值累加 除了用下標的方式累加、用指標的累加外 還有執行速度會更快的方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.120.99.31

11/25 00:46, , 1F
什麼向量?
11/25 00:46, 1F

11/25 00:51, , 2F
元素值的type都是int
11/25 00:51, 2F

11/25 00:52, , 3F
加多一個加總值的欄位,每次異動就更新加總值.
11/25 00:52, 3F
#include <stdio.h> #include <string.h> int summation(int,int); main() { time_t start_tm, finish_tm; int i; time(&start_tm); for (i=1;i<=800000000;i++) summation(2,8); time(&finish_tm); double elapsed_tm=difftime(finish_tm,start_tm); printf("%f",elapsed_tm); return 0; } int summation(int start,int end) { int i; static int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; for (i=start;i<=end;i++) a[0]+=a[i]; return a[0]; } 好像有快一點 原先是30秒 現在是28秒 @_@ ※ 編輯: CDMA2000 來自: 122.120.99.31 (11/25 01:11)

11/25 01:17, , 4F
我寫的很爛...
11/25 01:17, 4F

11/25 01:31, , 5F
time()的精準度到多少?
11/25 01:31, 5F

11/25 01:33, , 6F
另外, 可以先去體會一下演算法裡面計算複雜度, 再回頭看
11/25 01:33, 6F

11/25 01:33, , 7F
看這個測時間的程式.
11/25 01:33, 7F

11/25 01:47, , 8F
感謝建議 我再想想 對了 翻翻資料結構有用嗎?
11/25 01:47, 8F

11/25 01:48, , 9F
這應該是小技巧,資料結構還不算用到.
11/25 01:48, 9F

11/25 01:50, , 10F
不過可建議直接做一個col_a[13] 當累計,傳回 a[e]-a[s]
11/25 01:50, 10F

11/25 01:57, , 11F
用multithread多執行緒下去跑?
11/25 01:57, 11F

11/25 02:03, , 12F
謝謝tropical 快多了
11/25 02:03, 12F

11/25 02:04, , 13F
http://codepad.org/rbLUx9B0 -funroll-loops 下下去
11/25 02:04, 13F

11/25 02:05, , 14F
試試, 既然有常數是編譯時期已知的, 就不用傳來傳去
11/25 02:05, 14F

11/25 02:08, , 15F
算某塊小區間也可以用template去展開
11/25 02:08, 15F

11/25 02:10, , 16F
看起來像每個月份的天數, 就用 partial_sum 去做, 就
11/25 02:10, 16F

11/25 02:10, , 17F
謝謝板主 我不會C++
11/25 02:10, 17F

11/25 02:10, , 18F
如 t 大講的那樣
11/25 02:10, 18F

11/25 02:11, , 19F
Orz ... 我不會 C 語言
11/25 02:11, 19F

11/25 02:11, , 20F
謝謝各位的意見 小弟是程設新手
11/25 02:11, 20F

11/25 02:13, , 21F
程設新手就在計較執行速度也太早...
11/25 02:13, 21F

11/25 02:14, , 22F
C++應該是比C難更多吧!?
11/25 02:14, 22F

11/25 02:17, , 23F
不清楚耶...我也是新手@_@
11/25 02:17, 23F

11/25 03:48, , 24F
新手當C/C++板板主嗎 XD
11/25 03:48, 24F

11/25 11:33, , 25F
我不會C++
11/25 11:33, 25F

11/25 20:02, , 26F
用BIT binary index tree可以快很多....
11/25 20:02, 26F

11/27 13:46, , 27F
新手不要那麼急著計較執行時間,程式有條理比較重要
11/27 13:46, 27F
文章代碼(AID): #1EpdFCFD (C_and_CPP)