san*_*983 4 .net c# optimization performance conditional-operator
使用遗留代码,我发现我得到了很多这样的声明(超过500个)
bool isAEqualsB = (a == b) ? true : false;
Run Code Online (Sandbox Code Playgroud)
像这样重写它是否有意义?
bool isAEqualsB = (a == b)
Run Code Online (Sandbox Code Playgroud)
或者将在编译时进行优化?
提前致谢,
桑蒂!=)
忽略性能-这是使不可能成为一个瓶颈,这不应该是你怎么想,直到你证明它的相关的适当基准.
我绝对会关心可读性 - 从这个角度来看,我认为第二种方法要好得多,而且肯定会使用它.
编辑:在优化方面,看起来C#编译器没有优化它:
// First form
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: beq.s IL_0007
IL_0004: ldc.i4.0
IL_0005: br.s IL_0008
IL_0007: ldc.i4.1
IL_0008: stloc.0
// Second form
IL_0009: ldarg.0
IL_000a: ldarg.1
IL_000b: ceq
IL_000d: stloc.1
Run Code Online (Sandbox Code Playgroud)
然而,当然不是IL也不重要 - 这就是JIT编译器的作用.现在即使IL大小的差异也可能意味着内联与否之间的差异......