某些算法函数最后几行操作都是一些数学运算,例如+ -。
这时候就有一个细节的问题了,比方说有一个加法函数:
public static long plus( long a, long b )
函数体可以写成:
return a + b;
也可以写成:
a += b; return a;
那么,那种效率更高?
一下是用IL DASE分析的2个函数的结果:
前者:
// 代码大小 9 (0x9)
.maxstack 2
.locals init (int32 V_0)
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldarg.1
IL_0003: add
IL_0004: stloc.0
IL_0005: br.s IL_0007
IL_0007: ldloc.0
IL_0008: ret
后者:
// 代码大小 12 (0xc)
.maxstack 2
.locals init (int32 V_0)
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldarg.1
IL_0003: add
IL_0004: starg.s a
IL_0006: ldarg.0
IL_0007: stloc.0
IL_0008: br.s IL_000a
IL_000a: ldloc.0
IL_000b: ret
之后我就不说了~~~~~~因为~~~~~~~~我~~我~~~~实在是不知道~~~~~~哪个更有效率~~~~~~