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