2012-05-30 58 views
0

假設我們有二維數組bool s代表簡單遊戲的地圖。如果單元格被某個遊戲對象佔用(否則false),則可以將陣列的每個單元格設置爲true有條件地給循環中的int變量賦值(優化)

我們想更新關於對象行爲的循環地圖。假設(由於某些原因)我們無法僅更新地圖的某些區域,我們必須遍歷數組中的每個單元格,並在對象已改變其位置時否定其值。

我們知道,在每個數組的更新中只有很少的改變,但數組是巨大的。現在問題出現了。 什麼更優化。

(1)本:

for (int i = 0; i < Rows; i++) 
    for (int j = 0; j < Cols; j++) 
    { 
     bool newValue = update(i,j); 
     arr[i,j] = arr[i,j] != newValue ? newValue : arr[i,j]; 
    } 

(2)這樣的:

for (int i = 0; i < Rows; i++) 
    for (int j = 0; j < Cols; j++) 
    { 
     bool newValue = update(i,j); 
     if(newValue != arr[i,j]) 
      arr[i,j] = newValue; 
    } 

(3)或也許這:

for (int i = 0; i < Rows; i++) 
    for (int j = 0; j < Cols; j++) 
    { 
     arr[i,j] = update(i,j); 
    } 

我認爲(1)是最糟糕的溶液這裏。所以(2)vs(3)。

+0

我認爲2和3之間的差異會很小,差異不會很重要,所以請使用最簡單的(3)。這似乎同意這個SO問題http://stackoverflow.com/questions/4586795/performance-assign-boolean-value-always-or-check-value-first – hatchet

回答

0

否3.沒有理由像#2那樣編寫代碼。你可以刪除,如果沒有任何問題。