与运营商&&和||的表现

时间:2018-12-30 01:10:13

标签: performance operators microbenchmark

我有一个简单的性能疑问。当我必须检查几个变量时,这两个选项中哪个哪个具有更高的性能?

return (a >= 0 && b >= 0 && c >= 0 && d >= 0);

return !(a < 0 || b < 0 || c < 0 || d < 0);

我问这个是因为我认为||运算符发现TRUE条件时会停止,但&&运算符必须与整个条件进行比较。

那么...哪个更好?

1 个答案:

答案 0 :(得分:3)

当发现第一个错误条件时,您的第一个示例将停止,而当发现第一个真实条件时,您的第二个示例将停止。鉴于第二个具有一系列比较,当第一个为false时,每个比较都为true,因此两个return语句将在相同数量的比较后停止。因此,除非编译器对两组比较做一些不寻常的事情,否则它们应该在相似的时间执行。