条件为循环中的int变量赋值(优化)

时间:2012-05-30 23:32:21

标签: optimization variable-assignment

假设我们有 bool 的二维数组,它代表简单游戏的地图。如果单元格被某个游戏的对象占用( false ),则数组的每个单元格都可以设置为 true

我们想要在循环中更新关于对象行为的地图。假设(由于某些原因)我们无法仅更新地图的某些区域,我们必须迭代数组中的每个单元格,并在对象更改其位置时否定它的值。

我们知道,在每个数组的更新中,只有很少的变化,但数组很大。现在问题就出现了。 什么是最优的。

(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)。

1 个答案:

答案 0 :(得分:0)

否3.没有理由像在#2中那样编写代码。您可以毫无问题地删除if。