C#编译器如何优化代码片段?
发布时间:2020-12-15 20:53:35 所属栏目:百科 来源:网络整理
导读:如果我有这样的代码 for(int i=0;i10;i++){ int iTemp; iTemp = i; //.........} 编译器是否会立即对iTemp进行10次操作? 或者它优化它? 我的意思是如果我重写循环为 int iTemp;for(int i=0;i10;i++){ iTemp = i; //.........} 会更快吗? 解决方法 使用 re
如果我有这样的代码
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时不会产生任何性能差异. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |