使用C ++比较巨大的文件

时间:2012-08-06 17:14:26

标签: c++ file diff

我有两个大文本文件,每个文件都有超过1000万行。我如何比较文件并使用C ++在文件中获得不同的行。

我尝试将一个文件加载到内存中并对内存进行排序,并使用二叉​​树逻辑来比较文件。它比较并给了我20秒的结果。但它消耗更多的内存。 (文本文件大约500 MB)。

我想比较两个文件而不消耗更多内存,良好的性能并且对硬盘的影响最小。

1 个答案:

答案 0 :(得分:4)

你可以使用两遍法。

第一次通过,你读取文件但只存储哈希值和行起始位置的行,然后你可以根据哈希值比较文件,你只能在第二遍中读取行再次完成比较,当两行有相同的哈希值。这样可以节省内存消耗和CPU时间,但有两次读取一些行会有点损失。