Git 提供了这 4 种差异算法,但没有任何进一步的信息,它们有什么区别。
每种算法的优点是什么?是否对算法执行不同的各种情况进行了比较?
我认为支持多种算法,因为在所有情况下,没有一种算法显然是最佳选择。
区别在于补丁输出的可读性和生成补丁所需的处理时间。
总而言之,这就是我所理解的差异:
这是迈尔斯速度、耐心和直方图的比较:http ://marc.info/?l=git&m=133103975225142&w=2
这是直方图与 Myers 的差异输出的比较:http ://marc.info/?l=git&m=138023003519837&w=2
虽然只比较了 2 种算法:Myers 和 Histogram,但它可能会有所帮助。Nugroho 等人的一项研究。diff
揭示了两种算法之间的分歧程度。该研究进行了 3 次比较,即指标、SZZ 算法和补丁。从metrics和SZZ的对比中,我们可以看到Myers和Histogram在不同识别代码变化的数量上有很大的差异。确实,diff's
在描述变化时,这些都不是不正确的。然而,从手动补丁比较来看,直方图算法diff
在描述人类改变意图方面提供了一个更好的合理输出。