快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

简朴代码的性能差异

《.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
}


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




返回类别: 教程
上一教程: 部署.net平台的程序
下一教程: 在.net中读写INI文件

您可以阅读与"简朴代码的性能差异"相关的教程:
· ASP.NET强盛的性能(二)
· 几个很不错的.NET 相关的FAQ和例子代码的连接
· ASP.Net中程序构架与程序代码的分离
· ASP.NET强盛的性能(一)
· 一个FTP客户端的C#代码
    微笑服务 优质保证 索取样品