Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 记录匹配-高效迭代_Java_Performance_Match - Fatal编程技术网

Java 记录匹配-高效迭代

Java 记录匹配-高效迭代,java,performance,match,Java,Performance,Match,我必须在Java中对70K条记录进行记录匹配。一个记录大小将是200字节,因为记录匹配过程将所有记录与所有记录进行比较。我的问题是,迭代和执行比较的效率如何 首先,您不需要将所有内容相互比较。一旦A-B等于B-A,您只需将其与后续项进行比较。例如,您有{A,B,C,D},然后将A与B,C和D进行比较。将B与C和D进行比较,并将C与D进行比较。这将比较量从n^2减少到n 您可以通过创建搜索块来优化算法。将所有具有相同姓名和姓氏的人放在同一块上。每个人在其他街区都有相同的电子邮件,以此类推。毕竟,您

我必须在Java中对70K条记录进行记录匹配。一个记录大小将是200字节,因为记录匹配过程将所有记录与所有记录进行比较。我的问题是,迭代和执行比较的效率如何

首先,您不需要将所有内容相互比较。一旦A-B等于B-A,您只需将其与后续项进行比较。例如,您有{A,B,C,D},然后将A与B,C和D进行比较。将B与C和D进行比较,并将C与D进行比较。这将比较量从n^2减少到n

您可以通过创建搜索块来优化算法。将所有具有相同姓名和姓氏的人放在同一块上。每个人在其他街区都有相同的电子邮件,以此类推。毕竟,您可以按照上述方式处理每个块,比较它们的记录。根据您拥有的记录数量,您将大大缩短处理时间。

使用Duke[。 虽然不完美,但它是免费的


我们有更好更快的.NET版本,但它是内部的,还不是OSS。

只有14MB的数据-非常微不足道。数据来自哪里?您的性能要求是什么?您是否尝试过实现最简单的解决方案,并证明它太慢了?这将给您带来n*(n-1)/2次迭代。4次您的案例是2'449'965'000。如果您的比较非常快,这是可以的。如果不是,您将有一个性能问题。将您的数据放在数据库中,让您的数据库处理。您应该描述您的任务,可能没有必要将所有70K记录相互比较。使用合适的索引,我可以测量您的任务c可以简化为N*logn比较。但是首先你应该检查廉价的暴力解决方案是否足够快。谢谢,用例:我们需要找出重复的记录。基于特定的匹配方程,即(名字和姓氏)和(电子邮件或电话)。所有名字字段匹配准确,如果不匹配则模糊(距离、语音)匹配。剩余字段将具有精确匹配。数据在solr中。希望这会有所帮助。是否有可能使其成为多线程的。