考虑下面的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;
}
答案 0 :(得分:2)
正确的答案将是&#39;它取决于&#39;。编译器对代码应用了太多优化。因此,很难预测生成的IL代码是如何形成的。 但总的来说,操作比两个快。特别是在使用字典执行哈希计算逻辑以按键查找值的情况下。
答案 1 :(得分:0)
在这个例子中,&#39; if&#39;与字典查找相比,性能可以忽略不计。因此,案例2应该更快,因为您只进行一次字典查找。