“-D” seçeneğinin diff ile etkisi nedir?


24

diffOpenBSD'de uygulama standart olmayan sahiptir -daşağıdaki belgelerle birlikte seçeneği:

-d

Mümkün olduğu kadar küçük bir fark üretmeyi çok deneyin. Bu, birçok değişiklik içeren büyük dosyaları işlerken çok fazla işlem gücü ve bellek tüketebilir.

GNU diffuygulaması daha kısa belgelerle aynı seçeneğe sahiptir

-d, --minimal

daha küçük bir değişiklik kümesi bulmaya çalışın

Zaman zaman ben aynı herhangi şekil veya form farklı olduğu çıktı üretir sadece görmek için bu seçeneği kullandım diffseçeneği olmadan komuta ama ettik asla (hayır cinas tasarlamak) herhangi bir fark görüldü.

Birisi bu seçeneğin gerçekte aynı komuttan farklı bir sonuç ürettiği bir örnek verebilir veya gösterebilir -dmi? Alternatif olarak, eğer biri bu seçeneğin başlayabilmesi için gerekli koşulları açıklayabilirse, "minimal" in "daha az çıktı satırı" mı yoksa "daha az kalça" mı olduğu konusunda da emin değilim.

Tahmin edilemeyecek bir tahmin, çok büyük önsezilerle ilgisi olduğu yönünde.



@JdeBP Evet, gerçekten. Bana bu bayrak ve hiçbir şey yapmadığını gördüğümden beri ne yaptığını bilmediğim gerçeğini hatırlattı.
Kusalananda

1
info diff performanceaçıkladı IIRC
Stéphane Chazelas

1
Açıkça ilgili . Maalesef, hiçbir müşteri örneği -> minimum sonuç.
Isaac

1
gdiff -dOpenBSD'ye yapılan ilavelerin yararlı olup olmadığını kontrol etmek için farklı çıktılar yaratacak bir örnek almak istiyorum . Testlerimden hiçbir fark alamadım, ancak OpenBSD kodunun önemli bir etki gibi görünen performansı yavaşlattığı açık, çünkü Douglas McIlroy’dan gelen farklı Algoritma normal dosya boyutlarını kullandığınız sürece gdiff’den daha hızlı.
schily

Yanıtlar:


15

GNU'da diffFreeBSD üzerinde kullanılan, --minimalbayrak "ye maliyeti sınırlanmasına neden olur Paul Eggert tarafından bir algoritma varyasyon tetikler O(N**1.5 log N)farklılıklara sahip büyük girişler için optimal çıktı üretme fiyata". Daha spesifik olarak, bu neden değil sadece bulmakta olduğu anlaşma birkaç sezgisel tarama uygulamak yakın optimum çözümlere ve ekstra farklılıkları gibi çizgiler "kafa karıştırıcı" dışarı atma olarak.

OpenBSD'de diffEski Unix kullanır, diff1970'lerden itibaren algoritması, kullanılan algoritma Harold Stone yatırıldıktan ve bayrak işaretsiz bir tamsayı maksimum değeri ile yerine kare kökü ile sınırlanan bir arama (etkili un-) tetikler karşılaştırılan çizgi aralığının boyutunun (veya daha büyükse 256) olması.--minimal

daha fazla okuma


1
UNIX kaynaklarından daha iyi bir fark yarattığımda, OpenBSD geliştirmeyi kontrol ettim ve daha iyi sonuçlar bulamadım. Orijinal stone () işlevinin kullandığını unutmayın: `} while ((y = b [++ j])> 0);` ve BTW: normal dosya boyutları için, geliştirilmiş UNIX farkım GNU farkından daha hızlıdır.
schily
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.