性能问题:if(isChecked)与if(isChecked == true)

时间:2015-01-01 11:31:56

标签: c# performance if-statement runtime compile-time

Compiletime 运行时中使用if (isChecked)if (isChecked == true)时是否存在性能问题?

1 个答案:

答案 0 :(得分:8)

无任何性能问题。为这两种情况生成的IL完全相同,当IL相同时,它的执行将是相同的。所以没有运行时差异。

bool x = true;
if (x == true) // or (x)
    Console.WriteLine("True");

IL_0001:  ldc.i4.1    
IL_0002:  stloc.0     // x
IL_0003:  ldloc.0     // x
IL_0004:  ldc.i4.0    
IL_0005:  ceq         
IL_0007:  stloc.1     // CS$4$0000
IL_0008:  ldloc.1     // CS$4$0000
IL_0009:  brtrue.s    IL_0016
IL_000B:  ldstr       "True"
IL_0010:  call        System.Console.WriteLine

安装LINQPad并在下次自己尝试;)

至于编译时,如评论中所述,生成的abstract syntax tree实际上会有所不同。这是if(x)

的AST的相关部分

enter image description here

现在是if(x == true)

enter image description here

你可以看到差异。