|
10
|
| John Kugelman Michael Hodel · 技术社区 · 17 年前 |
|
1
9
|
|
|
2
9
这不太好
它本质上是一种缓冲流算法,在任何给定的行上都知道所有先前行的差异。
|
|
|
3
2
您案例中的算法实现(应包含错误):
有一些我称之为快速数组的数据结构——它们可能是
这不会使用任何内存或周期
|
|
|
4
2
我并不是说这一定是最快的解决方案——我认为 Ben S's accepted answer |
|
|
5
1
如果您接受字典(散列映射)是O(n)空间和O(1)插入/查找,那么这个解决方案在时间和空间上都应该是O(m+n)。
>>> diff([1, 2, 1, 1, 3, 5, 2, 9], ... [ 2, 1, 3, 6, 5, 2, 8, 9]) < 1 = 2 2 = 1 1 < 1 = 3 3 > 6 = 5 5 = 2 2 > 8 = 9 9
好吧,有点作弊
|
|
|
6
0
这是对ephemient答案的改进,它只在有变化时使用额外的内存。
评论?改进? |
|
7
0
我一直在寻找一个程序来区分大文件而不耗尽内存,但没有找到适合我的目的。我对使用diff进行修补不感兴趣(那么我可能会使用
(我的典型用例是:我有一些NLP工具,用来处理大型文本语料库。我运行一次,得到一个122760246行长的文件,我对我的工具进行更改,再次运行,得到一个每百万行不同的文件,可能两次插入和一次删除,或者只有一行不同,诸如此类。) 因为我什么都找不到,所以我只做了一个小脚本 https://github.com/unhammer/diff-large-files 它可以工作(dwdiff接受它作为输入),它足够快(比在管道中经常在它后面运行的xz进程快),而且最重要的是它不会耗尽内存。 |
|
|
8
-1
在Python中,类似于:
|