性能问题:if (isChecked) 与 if (isChecked == true)
Performance issue: if (isChecked) vs. if (isChecked == true)
在 Compiletime 或 Runtime 中使用 if (isChecked)
与 if (isChecked == true)
有任何性能问题吗?
没有任何性能问题。为这两种情况生成的 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[=10=]00
IL_0008: ldloc.1 // CS[=10=]00
IL_0009: brtrue.s IL_0016
IL_000B: ldstr "True"
IL_0010: call System.Console.WriteLine
安装LINQPad,下次自己试试;)
至于 compile-time,如评论中所述,生成的 abstract syntax tree 实际上会有所不同。这是 if(x)
的 AST 的相关部分
现在 if(x == true)
你可以看出区别。
在 Compiletime 或 Runtime 中使用 if (isChecked)
与 if (isChecked == true)
有任何性能问题吗?
没有任何性能问题。为这两种情况生成的 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[=10=]00
IL_0008: ldloc.1 // CS[=10=]00
IL_0009: brtrue.s IL_0016
IL_000B: ldstr "True"
IL_0010: call System.Console.WriteLine
安装LINQPad,下次自己试试;)
至于 compile-time,如评论中所述,生成的 abstract syntax tree 实际上会有所不同。这是 if(x)
现在 if(x == true)
你可以看出区别。