【发布时间】:2014-11-03 06:56:39
【问题描述】:
我必须迭代超过 100 万个项目,我的下一步行动取决于对这 100 万个项目的成功迭代。 截至目前,我正在使用 C# 的 While 循环,完成迭代大约需要 5-6 分钟。有没有办法加快这个处理?稍后我可能有大约 5-6 百万个项目要迭代。
System.IO.StreamReader file =
new System.IO.StreamReader("data.csv");
System.IO.StreamWriter jsonFile =
new System.IO.StreamWriter("jsonData.csv");
BBP obj;
var dataList = new Dictionary<string, dynamic>();
while ((line = file.ReadLine()) != null)
{
if (counter == 0)
{
columns = line.Split(',');
}
else
{
data = line.Split(',');
obj = new BBP();
obj.BBP_CR_PART_NO = data[0];
obj.BBP_RO_NO = data[1];
obj.BBP_BPR_TPN = data[2];
dataList.Add("item_" + counter, obj);
Console.WriteLine(counter);
}
counter++;
}
【问题讨论】:
-
这个问题太模糊和投机。循环本身并不是天生慢的。在现代硬件上,100 万次无所事事的迭代花费不到一秒钟的时间。但是你没有发布慢的代码,所以没有人可以评论。请看stackoverflow.com/help/mcve
-
是的邮政编码,否则我们无能为力,您如何“使用 while 进行迭代”?如果迭代集合,只需使用 foreach,我可以向您保证,缓慢的部分不是迭代,而是您在其中所做的任何事情
-
如果可以使用多线程,在适当的时候使用
break和continue? -
一旦你修改了你疯狂模糊的问题,你可能应该做的一件事是尝试对你正在迭代的数组进行排序。如果是一个数组就是。
-
添加了代码示例。现在请指教。谢谢!!!
标签: c# performance loops iteration