运算符 && 和 || 的性能
Performance with operators && and ||
我有一个简单的性能疑问。当我必须检查多个变量时,这两个选项中哪个选项的性能更好?
return (a >= 0 && b >= 0 && c >= 0 && d >= 0);
或
return !(a < 0 || b < 0 || c < 0 || d < 0);
我问这个是因为我想 ||运算符在找到 TRUE 条件时停止,但 && 运算符必须与整个条件进行比较。
所以...哪个更好?
您的第一个示例将在发现第一个假条件时停止,您的第二个示例将在找到第一个真条件时停止。鉴于第二个有一系列比较,当第一个为假时,每个比较为真,两个 return 语句将在相同数量的比较后停止。所以,除非编译器对两组比较做了一些不寻常的事情,否则它们应该在相似的时间执行。
我有一个简单的性能疑问。当我必须检查多个变量时,这两个选项中哪个选项的性能更好?
return (a >= 0 && b >= 0 && c >= 0 && d >= 0);
或
return !(a < 0 || b < 0 || c < 0 || d < 0);
我问这个是因为我想 ||运算符在找到 TRUE 条件时停止,但 && 运算符必须与整个条件进行比较。
所以...哪个更好?
您的第一个示例将在发现第一个假条件时停止,您的第二个示例将在找到第一个真条件时停止。鉴于第二个有一系列比较,当第一个为假时,每个比较为真,两个 return 语句将在相同数量的比较后停止。所以,除非编译器对两组比较做了一些不寻常的事情,否则它们应该在相似的时间执行。