C# - 比较2个花车是一项昂贵的操作吗?

时间:2014-12-30 18:44:34

标签: c# performance unity3d

使用Unity的更新方法,我想知道比较2个浮点数是否比简单地设置Unity滑块值更贵或更便宜。例如:

void Update()
    {
        if (oldValue != _currentValue) // This being the comparison of 2 floats
        {
            _chargeBar.value = _currentValue;
        }
    }

VS

void Update()
    {          
        _chargeBar.value = _currentValue;          
    }

让我解释一下发生了什么。我有一个Unity UI滑块,我正在更新该值。如果我的2个花车不同,我只想更新值。但是,如果与比较2个浮点数相比较便宜,我可以更新每个更新的滑块值是一个高精度。无论哪种方式,都必须在每一帧结束时进行评估。我想知道哪个更好。或者另一种方法。感谢

1 个答案:

答案 0 :(得分:2)

比较速度很快,但if语句不是因为处理器在管道中同时执行多个命令。如果存在像if语句那样的条件跳转,则处理器需要在确定分支方向之前开始执行其他分支。如果意识到所选分支是错误的,则需要刷新其中的所有指令。在刷新之后执行另一个分支,但这比首先正确预测分支花费的时间要多得多。

另一方面,优化是毫无意义的,因为很可能在每一帧都进行绘制调用。这是因为很容易用背景颜色清除整个框架并再次绘制所有内容。如果UI中有任何透明度,则确保需要在每个帧上进行绘制调用。在这种情况下,需要将透明UI绘制为其他所有内容的最后一个元素。

如果此优化实际上很有用,它很可能已经在Unity的UI滑块的绘制功能构建中实现。