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

Здесь можно оставить пожелание относительно функций, которых в программе нет, но которые вам хотелось бы в ней видеть.

Модератор: motyara

Ответить
avmaksimov
Сообщения: 357
Зарегистрирован: Чт ноя 08, 2007 9:29 am
Откуда: Москва
Контактная информация:

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

Сообщение avmaksimov » Чт мар 16, 2017 10:31 pm

Иногда бывает необходимость сравнить два больших файла и ответить на вопрос - идентичны ли они. Встроенный сравнитель или WinMerge сразу же начинают парсить (WinMerge падает с файлами больше Гигабайта). В итоге выход - делать md5 в файл для каждого из них и сравнивать файлы md5.

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

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

Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3125
Зарегистрирован: Пт окт 12, 2007 9:00 pm
Контактная информация:

Сообщение Max Diesel » Вс мар 19, 2017 12:14 am

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

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

avmaksimov
Сообщения: 357
Зарегистрирован: Чт ноя 08, 2007 9:29 am
Откуда: Москва
Контактная информация:

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

Сообщение avmaksimov » Вс мар 19, 2017 5:05 pm

Спасибо за подробный ответ и тесты. Проникся темой и прочитал, что быстрее сравнение, чем md5 и сравнение.

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

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

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

Ответить