web-dev-qa-db-ja.com

標準(マイヤーズ)、最小、忍耐、およびヒストグラム差分アルゴリズムによって生成されたさまざまな結果の例

Gitはこれらの4つのdiffアルゴリズムを提供していますが、それ以上の情報がなければ、それらの違いは何ですか。

この各アルゴリズムの利点は何ですか?アルゴリズムの動作が異なるさまざまなケースの比較はありますか?

45
Petr Pudlák

どのアルゴリズムも明らかにすべてのケースで最良の選択ではないため、複数のアルゴリズムがサポートされていると思います。

違いは、パッチ出力の読みやすさとパッチの生成に必要な処理時間です。

要約すると、これは私が理解している違いです:

これは、マイヤーズ、忍耐力、およびヒストグラムの速度の比較です。 http://marc.info/?l=git&m=133103975225142&w=2

ヒストグラムとマイヤーズの差分出力の比較を次に示します。 http://marc.info/?l=git&m=138023003519837&w=2

36
jelle foks

MyersとHistogramの2つのアルゴリズムのみを比較しますが、役立つ場合があります。 Nugroho et al。による研究 は、両方のdiffアルゴリズム間の不一致のレベルを明らかにします。この調査では、メトリック、SZZアルゴリズム、パッチという3つの比較を行いました。メトリックとSZZの比較から、識別されたさまざまなコード変更の数におけるMyersとHistogramの大きな違いを確認できます。それらのどれもdiff's変更の説明が正しくありません。ただし、手動パッチ比較から、ヒストグラムアルゴリズムは、人間の変更の意図を説明するのに適切なdiff出力を提供します。

1
YusufUMS