Kar*_*rim 3 c# compiler-construction optimization
如果我有这样的代码
for(int i=0;i<10;i++)
{
    int iTemp;
    iTemp = i;
    //.........
}
编译器是否会立即对iTemp进行10次操作?
或者它优化它?
我的意思是如果我重写循环为
int iTemp;
for(int i=0;i<10;i++)
{
    iTemp = i;
    //.........
}
会更快吗?
Jas*_*yon 20
使用反射器可以查看C#编译器生成的IL.
.method private hidebysig static void Way1() cil managed
{
    .maxstack 2
    .locals init (
        [0] int32 i)
    L_0000: ldc.i4.0 
    L_0001: stloc.0 
    L_0002: br.s L_0008
    L_0004: ldloc.0 
    L_0005: ldc.i4.1 
    L_0006: add 
    L_0007: stloc.0 
    L_0008: ldloc.0 
    L_0009: ldc.i4.s 10
    L_000b: blt.s L_0004
    L_000d: ret 
}
.method private hidebysig static void Way2() cil managed
{
    .maxstack 2
    .locals init (
        [0] int32 i)
    L_0000: ldc.i4.0 
    L_0001: stloc.0 
    L_0002: br.s L_0008
    L_0004: ldloc.0 
    L_0005: ldc.i4.1 
    L_0006: add 
    L_0007: stloc.0 
    L_0008: ldloc.0 
    L_0009: ldc.i4.s 10
    L_000b: blt.s L_0004
    L_000d: ret 
}
它们完全相同,因此在声明iTemp时不会产生任何性能差异.