use*_*322 19 .net c# performance if-statement return
我现在已经看到了两种不同的方法来制作布尔返回方法:
bool Case1()
{
if (A)
return true;
else
return false;
}
bool Case2()
{
if (A)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
哪一个更快?不写else只是为了保存一条线,使它更清晰,还是可以忽略不计的性能增益?
Son*_*nül 35
即使我们查看他们的IL代码,他们也有相同的IL代码,因此它们之间没有性能差异.使用对您来说更具可读性的那个.
.method private hidebysig instance bool Case1() cil managed
{
// Code size 9 (0x9)
.maxstack 1
.locals init ([0] bool CS$1$0000,
[1] bool CS$4$0001)
IL_0000: nop
IL_0001: ldc.i4.0
IL_0002: stloc.1
IL_0003: ldc.i4.1
IL_0004: stloc.0
IL_0005: br.s IL_0007
IL_0007: ldloc.0
IL_0008: ret
} // end of method Program::Case1
Run Code Online (Sandbox Code Playgroud)
看看这些代码的表现;
http://ideone.com/8Sc7Ho - >内存:33856 kB
http://ideone.com/MrnaAl - >内存:33808 kB
因此,如果您使用它们甚至10,000次,则无需担心.
不会有(可以忽略的)差异。从编码的角度来看,你真的应该这样做:
return A;
Run Code Online (Sandbox Code Playgroud)
但假设代码只是一个例子,那么我建议:
bool Case3()
{
bool retValue;
if (A)
{
retValue = true;
}
else
{
retValue = false;
}
return retValue;
}
Run Code Online (Sandbox Code Playgroud)
这样你就很清楚发生了什么,以及要返回什么值。如果您需要返回并更改该方法的功能,则要容易得多。
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |