如果我有这样的代码
for(int i=0;i<10;i++) { int iTemp; iTemp = i; //......... }
编译器是否会立即对iTemp进行10次操作?
或者它优化它?
我的意思是如果我重写循环为
int iTemp; for(int i=0;i<10;i++) { iTemp = i; //......... }
会更快吗?
解决方法
使用
reflector,您可以查看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时不会产生任何性能差异.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。