請教大家陣列的速度問題。
同樣大小的兩個陣列,但用不同維度的陣列:
double[,] buf1 = double[N,N];
double[] buf2 = double[N*N];
然後使用
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
buf1[i,j] = 123.45; // CASE 1
buf2[i*N+j] = 123.45; // CASE 2
}
}
差異的部分只有迴圈內的那一行。測試時,N=100,程式執行10000次。
CASE 1: 2.66 sec
CASE 2: 1.01 sec
我想瞭解速度差異的原因。
另外,把CASE 1的 i,j 調換成 j,i 並不會讓速度變快。
把CASE 2的 i,j 調換,速度會變慢,但還是遠比CASE 1快。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.0.170
※ 編輯: kikiapple 來自: 220.133.0.170 (08/03 23:54)
推
08/04 03:06, , 1F
08/04 03:06, 1F
→
08/04 03:06, , 2F
08/04 03:06, 2F
→
08/04 10:51, , 3F
08/04 10:51, 3F
→
08/04 11:00, , 4F
08/04 11:00, 4F
→
08/04 11:00, , 5F
08/04 11:00, 5F
→
08/04 11:01, , 6F
08/04 11:01, 6F
推
08/04 12:42, , 7F
08/04 12:42, 7F
推
08/05 09:21, , 8F
08/05 09:21, 8F
推
08/05 22:53, , 9F
08/05 22:53, 9F