如果/ Else,先测试为true或先测试为假

时间:2015-07-24 19:11:39

标签: performance optimization conventions

我有一个相当具体的问题。

假设我在一个函数的末尾,并且我决定是返回true还是false。

我想使用if / else语句执行此操作,并有两个选项:(示例为伪代码)

1)检查是否先工作:

if(resultVar != error){
    return true;
}else{
    return false;
}

2)检查它是否先失败:

if(resultVar == error){
    return false;
}else{
    return true;
}

我的问题很简单:哪种情况更好(更快?更干净?)?

我真的在看if / else本身,无视示例正在返回(但感谢答案)

该函数更可能想要返回true而不是false。

我意识到这两种情况做的完全相同,但只是反转了#39;按照他们做事的顺序。我想知道其中任何一方是否有任何优势,是否有一个更快,或更紧密地遵循惯例等等。

我也意识到这是非常挑剔的,我只是不知道是否有任何差异,哪些是最好的(如果重要的话)。

澄清:

需要进行比较以返回布尔值。实例返回的事实与比较发生的相关性不那么重要。

4 个答案:

答案 0 :(得分:6)

这是迄今为止最干净的:

return resultvar != error;

答案 1 :(得分:2)

这完全取决于语言和编译器。没有具体的答案。例如,在C中,这两个都将编码为:

return (resultVar!=error);

由任何体面的编译器。

答案 2 :(得分:1)

首先放置,因为它可能会在程序集中释放JUMP命令。但是,差异可以忽略不计,因为它是else,而不是else if。可能/技术上存在差异/,但在这种情况下您将看不到性能差异。

答案 3 :(得分:1)

两个示例中唯一的区别可能是运营商的实施。 A!=运算符反转运算结果。所以它增加了开销,但非常小。 ==是一个直接比较。

但是根据你打算在If / else上做什么,如果只是为变量赋值,则条件三元运算符(?)更快。对于复杂的多值决策,交换机/案例更灵活,但速度更慢。

在你的情况下这会更快:

return (resultVar == error) ? false : true;