Re: [問題] For迴圈 和 array 執行速度問題
來個隨便的測試
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
10/24 13:00, 1F
→
10/24 13:02, , 2F
10/24 13:02, 2F
→
10/24 13:05, , 3F
10/24 13:05, 3F
→
10/24 13:06, , 4F
10/24 13:06, 4F
推
10/24 13:14, , 5F
10/24 13:14, 5F
→
10/24 13:14, , 6F
10/24 13:14, 6F
→
10/24 13:15, , 7F
10/24 13:15, 7F
→
10/24 13:15, , 8F
10/24 13:15, 8F
推
10/24 13:19, , 9F
10/24 13:19, 9F
→
10/24 13:19, , 10F
10/24 13:19, 10F
→
10/24 13:20, , 11F
10/24 13:20, 11F
→
10/24 13:22, , 12F
10/24 13:22, 12F
推
10/24 13:24, , 13F
10/24 13:24, 13F
推
10/24 13:24, , 14F
10/24 13:24, 14F
→
10/24 13:24, , 15F
10/24 13:24, 15F
→
10/24 13:26, , 16F
10/24 13:26, 16F
討論串 (同標題文章)