The diff
implementasi pada OpenBSD memiliki non-standar -d
pilihan dengan dokumentasi berikut:
-d
Berusaha sangat keras untuk menghasilkan diff sekecil mungkin. Ini mungkin menghabiskan banyak daya pemrosesan dan memori saat memproses file besar dengan banyak perubahan.
diff
Implementasi GNU memiliki opsi yang sama dengan dokumentasi yang lebih pendek
-d
,--minimal
berusaha keras untuk menemukan set perubahan yang lebih kecil
Dari waktu ke waktu saya telah menggunakan opsi ini hanya untuk melihat apakah ia menghasilkan output dalam bentuk apa pun atau bentuk yang berbeda dari diff
perintah yang sama tanpa opsi, tetapi saya belum pernah melihat perbedaan (tidak ada kata pun dimaksudkan).
Bisakah seseorang memberikan atau menunjuk contoh di mana opsi ini benar-benar menghasilkan hasil yang berbeda dari perintah yang sama tanpa -d
? Atau, jika seseorang dapat menjelaskan keadaan yang diperlukan untuk opsi ini untuk menendang. Saya juga tidak yakin apakah "minimal" berarti "lebih sedikit garis keluaran" atau "lebih sedikit bakhil".
Dugaan tidak berpendidikan adalah bahwa hal itu berkaitan dengan bakhil yang sangat besar.
info diff performance
menjelaskannya IIRCgdiff -d
untuk memeriksa apakah penambahan pada OpenBSD bermanfaat. Dari pengujian saya, saya tidak bisa mendapatkan perbedaan tetapi jelas bahwa kode OpenBSD memperlambat kinerja yang terlihat seperti dampak yang signifikan, karena Algoritma diff dari Douglas McIlroy lebih cepat daripada gdiff selama Anda menggunakan ukuran file normal.Jawaban:
Dalam GNU
diff
, juga digunakan pada FreeBSD,--minimal
bendera memicu variasi algoritma oleh Paul Eggert yang menyebabkannya "membatasi biaya denganO(N**1.5 log N)
harga menghasilkan output suboptimal untuk input besar dengan perbedaan". Lebih khusus, itu menyebabkannya tidak menerapkan beberapa heuristik yang berurusan dalam menemukan hanya dekat dengan solusi optimal dan dalam membuang garis "membingungkan" sebagai perbedaan ekstra.Dalam OpenBSD
diff
, yang menggunakan lebih tua Unixdiff
algoritma dari tahun 1970-an, algoritma yang digunakan dikreditkan ke Harold Stone, dan para--minimal
bendera memicu pencarian yang (efektif un-) dibatasi oleh nilai maksimum unsigned integer bukan oleh akar kuadrat dari ukuran rentang garis yang dibandingkan (atau 256 jika lebih besar).Bacaan lebih lanjut
sumber