当我尝试遍历 IEnumerable 类型时,我对 for 循环的性能发生了什么知之甚少。
以下是导致严重性能问题的代码
foreach (IEdge ed in edcol)
{
IEnumerable<string> row =
from r in dtRow.AsEnumerable()
where (((r.Field<string>("F1") == ed.Vertex1.Name) &&
(r.Field<string>("F2") == ed.Vertex2.Name))
|| ((r.Field<string>("F1") == ed.Vertex2.Name) &&
(r.Field<string>("F2") == ed.Vertex1.Name)))
select r.Field<string>("EdgeId");
int co = row.Count();
//foreach (string s in row)
//{
//}
x++;
}
上面的 foreach(IEdge ed in edcol) 有大约 11000 次迭代要完成。如果我删除该行,它会在几分之一秒内运行
int co = row.Count();
从代码。
row.Count() 在所有循环中的最大值为 10。
如果我取消注释
//foreach (string s in row)
//{
//}
大约需要 10 分钟才能完成代码的执行。
IEnumerable 类型是否存在如此严重的性能问题.. ??