.method public hidebysig instance void WriteLine(string message) cil managed { // Code size 75 (0x4b) .maxstack 3 .locals init ([0] int32 i, [1] class [mscorlib]System.Text.StringBuilder sb, [2] int32 _Vb_t_i4_0) IL_0000: nop IL_0001: ldarg.0 IL_0002: ldfld bool NetSDKSamples.IndentedWriter::myPrintFlag IL_0007: brfalse.s IL_0048 IL_0009: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() IL_000e: stloc.1 IL_000f: ldc.i4.0 IL_0010: ldarg.0 IL_0011: ldfld int32 NetSDKSamples.IndentedWriter::myIndent IL_0016: ldc.i4.1 IL_0017: sub.ovf IL_0018: stloc.2 IL_0019: stloc.0 IL_001a: br.s IL_002a IL_001c: ldloc.1 IL_001d: ldc.i4.s 32 IL_001f: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(char) IL_0024: pop IL_0025: nop IL_0026: ldloc.0 IL_0027: ldc.i4.1 IL_0028: add.ovf IL_0029: stloc.0 IL_002a: ldloc.0 IL_002b: ldloc.2 IL_002c: ble.s IL_001c IL_002e: ldloc.1 IL_002f: ldarg.1 IL_0030: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) IL_0035: pop IL_0036: ldarg.0 IL_0037: ldfld class [mscorlib]System.IO.TextWriter NetSDKSamples.IndentedWriter::myTextWriter IL_003c: ldloc.1 IL_003d: callvirt instance string [mscorlib]System.Text.StringBuilder::ToString() IL_0042: callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) IL_0047: nop IL_0048: nop IL_0049: nop IL_004a: ret } // end of method IndentedWriter::WriteLine列表B:
.method public hidebysig instance void WriteLine(string message) cil managed { // Code size 66 (0x42) .maxstack 2 .locals ([0] class [mscorlib]System.Text.StringBuilder sb, [1] int32 i) IL_0000: ldarg.0 IL_0001: ldfld bool IndentedWriter::myPrintFlag IL_0006: brfalse.s IL_0041 IL_0008: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor() IL_000d: stloc.0 IL_000e: ldc.i4.0 IL_000f: stloc.1 IL_0010: br.s IL_001f IL_0012: ldloc.0 IL_0013: ldc.i4.s 32 IL_0015: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(char) IL_001a: pop IL_001b: ldloc.1 IL_001c: ldc.i4.1 IL_001d: add IL_001e: stloc.1 IL_001f: ldloc.1 IL_0020: ldarg.0 IL_0021: ldfld int32 IndentedWriter::myIndent IL_0026: blt.s IL_0012 IL_0028: ldloc.0 IL_0029: ldarg.1 IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string) IL_002f: pop IL_0030: ldarg.0 IL_0031: ldfld class [mscorlib]System.IO.TextWriter IndentedWriter::myTextWriter IL_0036: ldloc.0 IL_0037: callvirt instance string [mscorlib]System.Text.StringBuilder::ToString() IL_003c: callvirt instance void [mscorlib]System.IO.TextWriter::WriteLine(string) IL_0041: ret } // end of method IndentedWriter::WriteLine编译代码后,我简单随便比较了以下,超过12次实验发现,C#版本的FindType.exe使用反射列出属于某一特定对象的方法,险胜于VB.NET版本。后者最快时间也比前者最慢时间要慢。
VB.NET vs. C#, round 2: Pounding on performance--VB.NET vs C#, 第二波:效率碰撞
原文地址:http://blog.csdn.net/crazygolf/article/details/46313783