Re: [問題] For迴圈 和 array 執行速度問題

看板C_and_CPP作者 (我愛ASM)時間13年前 (2010/10/24 12:47), 編輯推噓4(4012)
留言16則, 6人參與, 最新討論串2/4 (看更多)
來個隨便的測試 2.Process returned 0 (0x0) execution time : 3.969 s int m = 100000, n = 100000, index = 0, i ,j; for(i=0;i<m*n;i++) { index++; } 1.Process returned 0 (0x0) execution time : 26.813 s for(i=0;i<m;i++) for(j=0;j<n;j++) { index++; } case 2 比 case 1 快6.75倍。 不過用哪種?看程式規模和代碼是不是「熱點」來決定,如果規模小,又 不是熱點段落。這種事就別計較了。 ※ 引述《genghiskii (SaoAn)》之銘言: : 大家好 小弟我有些觀念不是很清楚想請教大家 : 1. : for(i=0;i<m;i++) : for(j=0;j<n;j++) : { : //do something : } : 2. : for(i=0;i<m*n;i++) : { : //do something : } : 有個同學跟我說2跑的會比1快,請問這是為什麼呢? 不是都是跑了m*n次? : 另外還有個類似的問題 : 3. : for(i=0;i<m;i++) : for(j=0;j<n;j++) : { : array_2D[i][j]=some operation; : } : 4. : for(i=0;i<m;i++) : for(j=0;j<n;j++) : { : array_1D[i*m+j]=some operation; : } : 那個同學又跟我說4比3快,但是大小一樣,只有2D跟1D的差別,請問他說的是對的嗎? : 我原以為速度上1=2, 3=4, 但是被他這麼一說我有點被搞混了 : 煩請各位解答 謝謝 -- 不要問我從哪來,我只是一個浪跡天涯的工程師.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.20.160 ※ 編輯: MasterChang 來自: 118.232.20.160 (10/24 12:49)

10/24 13:00, , 1F
不是我要吐糟,10000*10000不會爆了int嗎
10/24 13:00, 1F

10/24 13:02, , 2F
10000*10000=0x2540BE400=爆掉=0x540BE400=1410065408
10/24 13:02, 2F

10/24 13:05, , 3F
10000000000/1410065408=7.09
10/24 13:05, 3F

10/24 13:06, , 4F
最上面推文是100000*100000太多0了都會打錯XD
10/24 13:06, 4F

10/24 13:14, , 5F
爆了就爆了啊, 只是要測迴圈效率不是嗎?? 除非overflow
10/24 13:14, 5F

10/24 13:14, , 6F
造成loop condition改變, 或者因為register state改變會
10/24 13:14, 6F

10/24 13:15, , 7F
影響效率(應該沒有這種事吧??) 另外, 不確定這個測試是
10/24 13:15, 7F

10/24 13:15, , 8F
用release開了opt跑的, 還是debug沒開opt跑的@_@"
10/24 13:15, 8F

10/24 13:19, , 9F
有差吧,上面那個只會跑1410065407次
10/24 13:19, 9F

10/24 13:19, , 10F
1410065408次,抱歉XD
10/24 13:19, 10F

10/24 13:20, , 11F
一樓的重點在於 m*n 就爆掉了XD
10/24 13:20, 11F

10/24 13:22, , 12F
i事實上不會跑到那麼大?
10/24 13:22, 12F

10/24 13:24, , 13F
糟, 看了a大的推文才看懂s大的點....Orz
10/24 13:24, 13F

10/24 13:24, , 14F
計算機概論 XD
10/24 13:24, 14F

10/24 13:24, , 15F
本來以為在說index會爆Orz
10/24 13:24, 15F

10/24 13:26, , 16F
int 是 4 byte 且 有號數,範圍:-1*2^31 ~ 2^31-1
10/24 13:26, 16F
文章代碼(AID): #1CmxfyAI (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1CmxfyAI (C_and_CPP)