L' diff
implémentation sur OpenBSD a une -d
option non standard avec la documentation suivante:
-d
Essayez très fort de produire un diff aussi petit que possible. Cela peut consommer beaucoup de puissance de traitement et de mémoire lors du traitement de fichiers volumineux avec de nombreuses modifications.
L' diff
implémentation GNU a la même option avec la documentation plus courte
-d
,--minimal
essayez de trouver un plus petit ensemble de changements
De temps en temps, j'ai utilisé cette option juste pour voir si elle génère une sortie qui est sous une forme ou une forme différente de la même diff
commande sans l'option, mais je n'ai jamais vu de différence (sans jeu de mots).
Quelqu'un pourrait-il fournir ou pointer vers un exemple où cette option produit en fait un résultat différent à partir de la même commande sans -d
? Alternativement, si quelqu'un pouvait expliquer les circonstances requises pour que cette option entre en jeu. Je ne sais pas non plus si "minimal" signifie "moins de lignes de sortie" ou "moins de mecs".
Une supposition non éduquée est que cela a à voir avec de très gros mecs.
info diff performance
l'explique IIRCgdiff -d
pour vérifier si les ajouts à OpenBSD sont utiles. D'après mes tests, je n'ai pu obtenir aucune différence, mais il est évident que le code OpenBSD ralentit les performances, ce qui semble avoir un impact significatif, car l'algorithme diff de Douglas McIlroy est plus rapide que gdiff tant que vous utilisez des tailles de fichier normales.Réponses:
Dans GNU
diff
, également utilisé sur FreeBSD, le--minimal
drapeau déclenche une variation d'algorithme de Paul Eggert qui l'amène à "limiter le coûtO(N**1.5 log N)
au prix de produire une sortie sous-optimale pour de grandes entrées avec des différences". Plus précisément, il l' amène à ne pas appliquer plusieurs heuristiques qui traitent à trouver simplement près des solutions optimales et à jeter « confusion » lignes que les différences supplémentaires.Dans OpenBSD
diff
, qui utilise l'anciendiff
algorithme Unix des années 1970, l'algorithme utilisé est attribué à Harold Stone, et l'--minimal
indicateur déclenche une recherche qui est (effectivement non) limitée par la valeur maximale d'un entier non signé plutôt que par la racine carrée de la taille de la gamme de lignes à comparer (ou 256 si elle est supérieure).Lectures complémentaires
la source