Библиотека сайта rus-linux.net
6. Издержки в производительности 'diff'
GNU 'diff' работает довольно эффективно; однако, в некоторых обстоятельствах можно заставить его работать быстрее или производить более компактный набор изменений. Существует два способа, с помощью которых можно влиять на исполнение GNU 'diff' с помощью изменения метода сравнения файлов.
Понятие производительности имеет более чем одну размерность, и не может быть выражено одной константой. Описываемые опции улучшают один параметр исполнения за счет другого, или улучшают исполнение в некоторых случаях, ухудшая его в других.
Метод, с помощью которого GNU 'diff' определяет какие строки изменились, всегда выдает близкий к минимальному набор различий. Обычно этого вполне достаточно для практического применения. Если производительность работы 'diff' достаточно велика, может возникнуть желание заставить 'diff' использовать модифицированный алгоритм, который иногда производит меньшие по объему наборы различий. Это достигается опцией '-d' или '--minimal'; однако это может также вызвать замедление 'diff' по сравнению с обычным режимом; поэтому этот метод не задается по умолчанию.
Когда сравниваемые файлы слишком велики и имеют маленькие группы отличий, рассеянных по ним, можно использовать опцию '-H' или '--speed-large-files' для внесения некоторых изменений в алгоритм, используемый 'diff'. Если входные файлы имеют всюду маленькую плотность изменений, эта опция ускоряет их сравнение без изменений результатов работы. Если нет, 'diff' может произвести больший по объему набор изменений; однако, результаты останутся правильными.
Обычно 'diff' отбрасывает начала и концы, общие для обоих файлов, прежде чем пытается найти минимальный набор различий. Это ускоряет 'diff', но иногда может привести к издержкам в размерах результата. Опция '--horizon-lines=LINES' не дает 'diff' отбрасывать последние LINES строк начала и первые LINES строк конца, что дает 'diff' , больше возможностей для поиска минимального резульлтата.
Next Previous Contents