一直以为foreach比for执行效率高

但是今天做了个简单的测试结果却不是这样,难道是我测试方法不对?

我的测试方案:

测试for和foreach的执行效率的问题//核心代码
测试for和foreach的执行效率的问题
private void btnExecFor_Click(object sender, System.EventArgs e)
        }

执行效果图:
测试for和foreach的执行效率的问题

测试结果:
数组长度 1000000 10000000 50000000
for执行时间(毫秒) 15 156 704
foreach执行时间(毫秒) 62 578 2065


看到这个结果,我汗了,差别太大了,也许是例子简单?
大家也来分析分析,是谁的对?
………………………………………………
分析结果-即时更新

分析一:
用Reflector.exe反编ForVsForeach.exe
foreach(int j in dArray)
{
iSum += j;
}

居然变成了
for (int num7 = 0; num7 < numArray2.Length; num7++)
{
int num4 = (int) numArray2[num7];
num3 += num4;
}
难道foreach在最后还是要编译成for运行?测试for和foreach的执行效率的问题

分析二:
by Laser.NET
针对数组这样的基本类型由于编译器优化的缘故,运行效率应该是差不多。
如果是其他的复杂的集合类型或者是自定义的数据类型就要看具体的enumerator和indexer的实现了:)

相关文章: