欢迎光临
我们一直在努力

简单代码的性能差异-.NET教程,.NET Framework

建站超值云服务器,限时71元/月

《.net 框架程序设计》里的几句代码,我重新整理了一下,写成函数,这样下面的反编译代码看起来更方便点:

public void boxing()

{

int32 v = 5;

console.writeline("{0},{1},{2}",v,v,v);

}

public void boxing1()

{

int32 v = 5;

object o = v;

console.writeline("{0},{1},{2}",o,o,o);

}两个函数的输出结果是一样的,但是哪一个函数更好呢?

第一个显然更简单,但是在性能上第二个好,看看反编译的代码:

boxing函数:

.method public hidebysig instance void boxing() cil managed

{

// code size: 31 byte(s)

.maxstack 4

.locals (

int32 v_0)

l_0000: ldc.i4.5

l_0001: stloc.0

l_0002: ldstr "{0},{1},{2}"

l_0007: ldloc.0

l_0008: box int32

l_000d: ldloc.0

l_000e: box int32

l_0013: ldloc.0

l_0014: box int32

l_0019: call void [mscorlib]system.console::writeline(string, object, object, object)

l_001e: ret

}

boxing1函数的:

.method public hidebysig instance void boxing1() cil managed

{

// code size: 23 byte(s)

.maxstack 4

.locals (

int32 v_0,

object v_1)

l_0000: ldc.i4.5

l_0001: stloc.0

l_0002: ldloc.0

l_0003: box int32

l_0008: stloc.1

l_0009: ldstr "{0},{1},{2}"

l_000e: ldloc.1

l_000f: ldloc.1

l_0010: ldloc.1

l_0011: call void [mscorlib]system.console::writeline(string, object, object, object)

l_0016: ret

}

第一个函数有三次装箱操作,第二个只有一次,在内存和时间消耗上都要小些。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 简单代码的性能差异-.NET教程,.NET Framework
分享到: 更多 (0)

相关推荐

  • 暂无文章