我想知道是否有一个差异库可与迭代器/生成器一起使用以提高性能。理想情况下,参数和响应都应该是迭代器,以避免将它们转换为列表。
我的“文本”存储在(某种)树结构中,我使用迭代器遍历文本。例如,如果我使用SequenceMatcher
中的difflib
,则必须将迭代器转换为以下列表:sm = SequenceMatcher(None, list(iterator1, iterator2)
。
如果库也将diff结果作为迭代器返回,这也会很有帮助,例如difflib
并非如此,例如sm.get_opcodes()
返回一个列表。
我也很快检查了google-diff-match-patch
,但是它似乎只允许输入文本,而不允许列表-因此,我必须将迭代器转换为纯文本。因此,尽管应该更快一些,但在串联时我可能会得到较差的结果(我会在某个时候尝试一下,但是更改为该库将需要对代码进行大量更改)。
那么,在进行区分时是否有任何支持迭代器的库?还是给定算法细节实际上是不可能的?