Страница 1 из 1

Возможность быстрого сравнения по содержимому

Добавлено: Чт мар 16, 2017 10:31 pm
avmaksimov
Иногда бывает необходимость сравнить два больших файла и ответить на вопрос - идентичны ли они. Встроенный сравнитель или WinMerge сразу же начинают парсить (WinMerge падает с файлами больше Гигабайта). В итоге выход - делать md5 в файл для каждого из них и сравнивать файлы md5.

Притом, md5 считается уж очень долго... Дольше копирования, хотя также по идее не должно быть такого, но не суть.

Как-то можно предусмотреть это? Если нет, то придется снова спасаться Autoit'ом).

Добавлено: Вс мар 19, 2017 12:14 am
Max Diesel
В этом плане все несколько сложнее чем хотелось бы. На самом деле для того чтобы определить просто лишь факт одинаковости файлов вариант подсчета md5 не является оптимальным, так как возможно файлы размером по 10 гигабайт различаются уже на 10-м байте - подсчет md5 для 10 гигабайт будет однозначно дольше чем побайтовое сравнение, ведь при побайтовом сравнении в этой ситуации нужно будет сравнить лишь 10 байт, после чего функция выдаст ответ "файлы не равны". Однако функция "Сравнить по содержимому" не предполагает что ей надо дойти лишь до первого же отличия, она ищет все отличия чтобы потом в окне сравнения их отобразить. Режим "сравнивать до первого отличия" используется лишь при синхронизации (когда проставлен флажок "По содержимому"), а отдельно такой функции в программе нет (впрочем это навело меня на мысль, что возможно имеет смысл добавить в окно прогресса сравнения иконку "не равны", которая будет отображаться в случае, если программа уже увидела что файлы не равны, но до окончания поиска отличий еще далеко).

P.S. Насчет скоростей копирования, сравнения и подсчета md5 лично у меня получились результаты, которые не имеют значительных отличий. Файл на 3,43 ГБ скопировался с HDD на SSD (то есть физические диски были разные) за 42 секунды, md5 этого файла подсчиталось за 45 секунд (с HDD), сравнение этих двух файлов производилось 45 секунд. Для чистоты эксперимента каждое из действий производилось после перезагрузки компьютера.

Re: Возможность быстрого сравнения по содержимому

Добавлено: Вс мар 19, 2017 5:05 pm
avmaksimov
Спасибо за подробный ответ и тесты. Проникся темой и прочитал, что быстрее сравнение, чем md5 и сравнение.

Что касается сравнений, то дело вот в чем. WinMerge устарел давно и никогда не был рассчитан на бинарные файлы, которые были у меня, поэтому процесс сравнения затянулся, а далее по-моему и вылетел (не помню, я закрыл раньше или само). Вы же сравнивали встроенным сравнением. Он заметно быстрее работает и есть прогресс-бар).

Соглашусь с вами по поводу иконки или любого другого значения: это и проще для реализации и перекроет 80% потребности.

Для себя же перейду на встроенный поиск + иконку на панели задач для WinMerge, чтобы только по данному пункту делалось сравнение через неё.