在 一直以为foreach比for执行效率高
但是今天做了个简单的测试结果却不是这样,难道是我测试方法不对?
我的测试方案:
执行效果图:
测试结果:
| 数组长度 | 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运行?
分析二:
by Laser.NET
针对数组这样的基本类型由于编译器优化的缘故,运行效率应该是差不多。
如果是其他的复杂的集合类型或者是自定义的数据类型就要看具体的enumerator和indexer的实现了:)