【发布时间】:2014-12-09 16:36:16
【问题描述】:
请任何人告诉我,如果在 C#.Net 中,在设置之前检查属性值更高效,并且仅在值不同时设置,还是盲目地将其设置为新值更高效?
例如:
bool newActiveState = true;
// Only set the value if it differs
if(myObject.IsActive != newActiveState )
{
myObject.IsActive = newActiveState;
}
对
bool newActiveState = true;
// Set it blindly
myObject.IsActive = newActiveState;
一种方法对编译器的帮助是否比另一种更好?有一种方法可以提供更好的编译器提示吗?
我知道,如果有任何收获,那只是微优化,但在大规模嵌套递归循环中可能很容易知道。
根据 ~Adam Houldsworth 的澄清问题进行更新:
假设它只是一个普通的属性,没有代码在设置时运行,但后来的代码读取了属性值,然后只执行耗时的过程,所以不在此代码的范围内。
【问题讨论】:
-
这取决于设置的数据大小,以及值变化时是否运行任何代码。
-
这取决于数据,但仅对于简单的
bool字段,差异可以忽略不计(如果有)。绝对是微优化。 -
好的,所以假设它只是一个普通的属性并且没有代码在设置时运行,但是稍后的代码会读取属性值并且只执行耗时的过程,所以不在此代码的范围内。我会用这个更新问题。
标签: c# optimization properties setting