gpt4 book ai didi

c# - 通过大型数据表优化循环

转载 作者:行者123 更新时间:2023-12-04 00:24:02 25 4
gpt4 key购买 nike

我正在使用 100 到 10000 行的数据表,通过doyble循环将每一行相互比较。

for (int i = 0; i < DT1.Rows.Count; i++)
{
for (int j = 0; j < DT1.Rows.Count; j++)
{
//some code to compare data
}
}

对于 100-200 行,它在几分钟内完成,这没问题,但将几千行与几千行进行比较,需要几个小时并且没有完成。

我该怎么做才能加快速度?我想到的最好的办法是使用对象列表,而不是数据表。

还有什么建议吗?

线程可以用来做这个吗?

谢谢。

最佳答案

我最近遇到了一个我必须解决的类似情况。尽管就我而言,我正在比较一对 excel 文件。对于我的试运行,在让它工作之后,我在嵌套循环中的一侧有 530 行,另一侧有 459000 行。这大约是 2.34 亿次迭代。我的程序能够在大约 30 秒内完成它。我在这种情况下使用了 foreach:

foreach (DataRow r1 in DT1.Rows) //Loop the First Source data
{
foreach (DataRow r2 in DT2.Rows) //Loop the Second Source data
{
//Comparison code here...
}
}

编辑:在您的循环中,作为引用点,您导致在循环的每次迭代中跟踪 3 个变量,第一个和第二个是您的计数器。第三个是主要的性能影响,DT1.Rows.Count。通过将直接行计数用作循环的一部分,必须在每次迭代时重新评估它。这给程序增加了不必要的时间。如果您绝对需要有计数器,则首先分配行计数:

int DT1Count = DT1.Rows.Count;
for (int i = 0; i < DT1Count; i++)
{
for (int j = 0; j < DT1Count; j++)
{
//some code to compare data
}
}

这样,行数是静态的,并且应删除在每次迭代时评估行数所需的额外处理。

关于c# - 通过大型数据表优化循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12837672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com