Cra*_*aig 13 c# performance loops
有人告诉我,以下代码块之间存在性能差异.
foreach (Entity e in entityList)
{
....
}
Run Code Online (Sandbox Code Playgroud)
和
for (int i=0; i<entityList.Count; i++)
{
Entity e = (Entity)entityList[i];
...
}
Run Code Online (Sandbox Code Playgroud)
哪里
List<Entity> entityList;
Run Code Online (Sandbox Code Playgroud)
我不是CLR期望,但从我可以告诉他们应该归结为基本相同的代码.有没有人有这样或那样的混凝土(哎呀,我拿着装满污垢)的证据?
Dan*_*ngs 10
foreach创建一个枚举器的实例(从GetEnumerator返回),该枚举器在整个foreach循环过程中也保持状态.然后,它反复调用枚举器上的Next()对象,并为它返回的每个对象运行代码.
它们不会以任何方式归结为相同的代码,真的,如果您编写自己的枚举器,您会看到它们.
小智 6
foreach示例大致对应于此代码:
using(IEnumerator<Entity> e = entityList.GetEnumerator()) {
while(e.MoveNext()) {
Entity entity = e.Current;
...
}
}
Run Code Online (Sandbox Code Playgroud)
这里有两个成本,常规for循环不需要支付:
| 归档时间: |
|
| 查看次数: |
21084 次 |
| 最近记录: |