假设我有一段代码:
age = 21;
allowedFromParents = false;
if (age >= 18 || allowedFromParents == true)
{
//go drink
}
当我调试这部分代码时,当它检查第一部分(这是正确的)时,它已经在语句中运行,而不需要检查另一条语句。
现在,这只是一个简单的条件,但是如果条件语句要计算的要大得多,在一个频繁的循环中,其中一个会比另一个更有可能返回一个真。
那么,条件的顺序对性能有影响吗?
发布于 2018-01-04 00:37:55
你现在看到的是短路评估。
正如您所猜测的那样,条件语句的顺序可能会影响性能:如果其中一个语句是,则计算起来要重得多,并且它是在一个紧循环中完成的,那么可以考虑将另一个语句放在首位。
然而,
过早的优化是一切邪恶的根源-- DonaldKnuth。
这意味着,除非在这段代码中测量了的性能瓶颈,否则编写时应该考虑到可读性,而不是性能。
发布于 2018-01-04 00:32:17
是的,这很重要。如果第一个条件是真的,那么它将停止评估其余的条件。换句话说,右边的条件可能是不计算的。
如果其中一个操作数或两个操作数都为真,则逻辑OR运算符返回布尔值true,否则返回false。在计算之前,操作数被隐式转换为bool类型,结果是bool类型。逻辑OR具有从左到右的结合性。
https://msdn.microsoft.com/fi-fi/library/f355wky8(v=vs.120).aspx
发布于 2018-01-04 00:48:24
将需要更多时间执行的条件放在右边,因此如果左边的条件计算为true,则不会检查第二个条件。
是的,如果您处于一个紧密的循环中,在最坏的情况下会迭代上千次,那么它肯定会提高性能。
https://stackoverflow.com/questions/48091365
复制