2013-08-21 25 views
0

我有两个文件A和B.A包含17000条记录,B也会有大约17000条记录。我想将B的每条记录与A进行比较,B中不匹配的所有记录都应该发送给其他文件。我用A的内容填充一个数组,然后从B中逐一提取记录,并尝试使用二进制搜索在A中找到它。有用的数据结构或优化以下情况

我很高兴能够搜索所需的时间,但是大部分时间(约80%)需要用记录填充数组。我怎样才能减少这个时间?

我正在使用PowerShell for this。

回答

2

尝试Compare-Object的cmdlet:

$a = Get-Content a.txt 
$b = Get-Content b.txt 

Compare-Object -ReferenceObject $a -DifferenceObject $b 

看看结果的SideIndicator财产。 '< ='表示该条目仅存在于$ a(ReferenceObject)中,而'=>'表示该条目存在于$ b(DifferenceObject)上。然后,您可以使用Where-Object过滤结果并将InputObject写入另一个文件

+0

如果文件有少量记录但这对我来说需要花费很多时间,那么可以很好地执行。我希望这个操作在10秒内完成,而现在它的花费大约需要20秒...总共需要16秒n填充数组......有什么方法可以加速吗? – rAmAnA

+0

PowerShell并不总是针对特定任务的下注工具,我想知道在比较之前对内容进行排序是否有帮助。 –

相关问题