哪个更贵 - 总是分配值或检查null然后分配

时间:2014-12-02 20:25:29

标签: c# performance

考虑下面的C#示例。哪个会更有效率? 我很想知道是否重复“如果'条件检查比直接分配值更昂贵。

在我的代码中我有情况 - 每次收到用户请求时都会有一段代码被执行。我想设置一个特定的全局键值,我想用于后续日志记录(null会被记录,直到有值)。问题是密钥的价值可以在任何无法确定的请求中收到,一旦我设置它我不再需要设置该值。

下面的while循环只是为了模拟所有用户请求的重复代码执行。价值'属性将在某些要求中设置。

var data = new Dictionary<string, string>();
var value = null; // some data received from user that later set the value
var i = 0;
while (i < 1000)
{
   if(data["key"] == null)
   {
      data["key"] = value;
   }

}

vs

while (i < 1000)
{
   data["key"] = value;
}

2 个答案:

答案 0 :(得分:2)

正确的答案将是&#39;它取决于&#39;。编译器对代码应用了太多优化。因此,很难预测生成的IL代码是如何形成的。 但总的来说,操作比两个快。特别是在使用字典执行哈希计算逻辑以按键查找值的情况下。

答案 1 :(得分:0)

在这个例子中,&#39; if&#39;与字典查找相比,性能可以忽略不计。因此,案例2应该更快,因为您只进行一次字典查找。