如果报表比较间接费用与分配间接费用

时间:2014-01-18 03:15:40

标签: c if-statement comparison variable-assignment overhead

我正在研究一些代码并找到了这个(here):

void ass_set_margins(ASS_Renderer *priv, int t, int b, int l, int r)
{
    if (priv->settings.left_margin != l || priv->settings.right_margin != r ||
        priv->settings.top_margin != t || priv->settings.bottom_margin != b) {
        priv->settings.left_margin = l;
        priv->settings.right_margin = r;
        priv->settings.top_margin = t;
        priv->settings.bottom_margin = b;
        ass_reconfigure(priv);
    }
}

我想知道为什么需要首先检查值,这样如果其中一个与传递的参数不同,那么我们用传递的参数分配所有值?如果我们没有检查就把它们全部通过了更少的代码,更少的开销?

改变状态的开销是否超过检查它?

1 个答案:

答案 0 :(得分:3)

不仅仅是作业:

ass_reconfigure(priv);

因此无论如何都必须检查条件。

如果你不得不执行分支,为什么不在那里移动仅在相同条件下需要的分配呢?这肯定会节省一些行代码,也可能会保存一两个执行指令。