【问题标题】:Conditional assigning a value to int variable in loop (optimization)有条件地在循环中为 int 变量赋值(优化)
【发布时间】:2012-06-05 05:50:22
【问题描述】:

假设我们有代表简单游戏地图的 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) 对 (3)。

【问题讨论】:

标签: optimization variable-assignment


【解决方案1】:

没有 3。没有理由像 #2 中那样编写代码。您可以删除 if 没有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多