【发布时间】:2012-11-13 13:31:32
【问题描述】:
我正在使用 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 行,它可以在几分钟内完成,这没关系,但是将几千行与几千行进行比较需要几个小时并且还没有完成。
我可以做些什么来加快速度?我想到的最好的办法是使用对象列表,而不是数据表。
还有其他建议吗?
线程可以用来做这个吗?
谢谢。
【问题讨论】:
-
这些嵌套循环的目的是什么?在加速之前我们需要知道问题
-
@DenisErmolin 我通过简单的算法将每一行相互连接,并将结果写入其他表。
-
将每一行与其他行进行比较的目的是什么?删除重复项或一些计算?
-
是否在同一个数据库中?如果是这样,已经为这些目的构建并优化了 dbms(即使数据库不同,但在 sql server 平台上,您可以使用链接服务器功能来比较服务器上的数据)。编写一个好的存储过程,它需要几秒钟。如果您坚持自己在代码中执行此操作,则可以考虑修改该内部循环(找到正确记录时是否会中断?,数据是否有序并且可以使用二进制算法来加快速度?)
-
@jags 计算字符串相似度。查找双重消息。