Diff

“-d”選項對diff有什麼影響?

  • October 2, 2018

OpenBSD 上的實現具有以下文件diff的非標準選項:-d

-d

非常努力地產生盡可能小的差異。在處理具有許多更改的大型文件時,這可能會消耗大量的處理能力和記憶體。

GNUdiff實現與較短的文件具有相同的選項

-d,--minimal

努力尋找更小的變化

有時我使用此選項只是為了查看它是否生成與diff沒有該選項的同一命令不同的任何形狀或形式的輸出,但我從未看到任何差異(沒有雙關語)。

有人可以提供或指出一個範例,其中此選項實際上會從同一命令產生不同的結果,而無需-d? 或者,如果有人可以解釋啟用此選項所需的情況。我也不確定“最小”是指“更少的輸出行”還是“更少的大塊”。

一個未經教育的猜測是它與非常大的帥哥有關。

diff在也用於 FreeBSD 的GNU中,該--minimal標誌觸發了 Paul Eggert 的算法變體,導致它“將成本限制在O(N**1.5 log N)為具有差異的大輸入產生次優輸出的代價”。更具體地說,它導致它應用幾種啟發式方法,這些啟發式方法僅用於尋找接近最佳解決方案,並丟棄“令人困惑”的行作為額外的差異。

diff在使用 1970 年代較舊的 Unix算法的OpenBSD中,所採用的diff算法歸功於 Harold Stone,並且--minimal標誌觸發的搜尋(實際上是非)由無符號整數的最大值而不是平方根限制被比較的行範圍的大小(如果更大,則為 256)。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/472540