我正在研究一些代码并找到了这个(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);
}
}
我想知道为什么需要首先检查值,这样如果其中一个与传递的参数不同,那么我们用传递的参数分配所有值?如果我们没有检查就把它们全部通过了更少的代码,更少的开销?
改变状态的开销是否超过检查它?
答案 0 :(得分:3)
不仅仅是作业:
ass_reconfigure(priv);
因此无论如何都必须检查条件。
如果你不得不执行分支,为什么不在那里移动仅在相同条件下需要的分配呢?这肯定会节省一些行代码,也可能会保存一两个执行指令。