【发布时间】:2011-05-04 10:45:25
【问题描述】:
在C#中,当布尔变量的值设置为false时仅当它是true时,我应该在设置它之前检查它是否是true还是只是设置它?
假设变量是true 50% 的时间,检查它是有意义的,因为比较更快。如果变量大部分时间是true,我应该跳过比较吗?
哪种做法更好?
方法一,先检查:
if (bVariable)
bVariable = false;
或方法二,设置即可:
bVariable = false;
方法 2 在哪些条件下是首选(如果有)?
【问题讨论】:
-
过早优化。 IMO 无用优化。
-
你不知道。如果第一要务是可读性,那么在上下文中首先检查可能更容易理解。
-
在这种情况下以及 99.9% 的其他人都喜欢它,更快是无关紧要的。只要您不需要执行任何其他条件逻辑,只需将其设置为 false。
-
我猜答案取决于很多因素,包括处理器本身(流水线、错过分支预测的成本、缓存等)。您是否尝试对此进行基准测试?我还假设在您的情况下这将是过早的(并且不必要的)优化,但我确实认为从(纯)科学的角度来看这个问题很有趣。
-
这是一个变量。所以我确实知道。如果它是一个可能有副作用的属性,那就另当别论了。
标签: c# comparison boolean