|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
《.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#代码 |
| 快精灵印艺坊 版权所有 |
首页 |
||