7

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

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

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

4

1 回答 1

4

您可以使用两遍方法。

第一遍,您读取文件但只存储哈希值和行的行开始位置,然后您可以根据哈希值比较文件,当两行具有相同的哈希值时,您只能在第二遍中再次读取行以进行完整比较。这将节省内存消耗和 cpu 时间,但读取某些行两次会有点惩罚。

于 2012-08-06T17:27:04.367 回答