标准(迈尔斯),最小,耐心和直方图差异算法产生的不同结果的例子

时间:2013-11-13 09:04:51

标签: diff git-diff

Git提供了这4种差异算法,但没有任何进一步的信息,它们的区别是什么。

每种算法有哪些优点?是否存在算法执行方式不同的各种情况的比较?

2 个答案:

答案 0 :(得分:34)

我认为支持多种算法,因为在所有情况下,没有一种算法显然是最佳选择。

差异在于补丁输出的可读性和生成补丁所需的处理时间。

总结一下,这就是我所理解的差异:

以下是迈尔斯速度,耐心和直方图的比较:http://marc.info/?l=git&m=133103975225142&w=2

以下是直方图与迈尔斯的差异输出的比较:http://marc.info/?l=git&m=138023003519837&w=2

答案 1 :(得分:1)

尽管仅比较两种算法:Myers和Histogram,但这可能会有所帮助。 A study by Nugroho et al.揭示了两种diff算法之间的分歧程度。该研究进行了3个比较,即指标,SZZ算法和补丁。从指标和SZZ的比较中,我们可以看到Myers和Histogram之间在已识别的不同代码更改数量上的巨大差异。确实,这些diff's都没有错误地描述更改。但是,通过手动补丁比较,直方图算法可提供更好的diff合理输出,以更好地描述人类改变的意图。