.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