В дополнении к этому вопросу: Algorithm for determining a file’s identityАлгоритм определения идентичности файла (оптимизация)
резюмировать: Я ищу дешевый алгоритм для определения идентичности файлов, которая работает подавляющее большинство времени.
Я пошел вперед и реализовал алгоритм, который дает мне «довольно уникальный« хэш на файл.
Путь мой алгоритм работы является:
Для файлов меньшего размера, чем определенный порог Я использую полное содержимое файлов для хэша идентичности.
Для файлов, размер которых превышает пороговое значение, я беру случайные N выборок размера X.
Включая файлы в хэш-данные. (То есть все файлы с различными размерами приводят к различным хэшу)
Вопросов:
Каких значения я должен выбрать для N и X (сколько случайных выборок я должен взять из какого размера?) Я пошел с 4 образцами по 8 тыс. Каждый и не умею пнуть алгоритм. Я обнаружил, что увеличение количества выборок быстро снижает скорость алгоритма (потому что поиски довольно дороги)
Математика одна: как не разные мои файлы должны быть для того, чтобы этот алгоритм взорвался. (2 разных файла с одинаковой длиной в конечном итоге имеют одинаковый хеш)
Оптимизация: Есть ли способ, которым я могу оптимизировать свою конкретную реализацию для повышения пропускной способности (я, кажется, способен делать около 100 файлов в секунду на моя система).
Является ли эта реализация понятной? Можете ли вы подумать о каких-либо реальных примерах мира, где это провалится. (Мое внимание сосредоточено на медиа-файлов)
Соответствующая информация:
Спасибо за вашу помощь!
nitpicking: Signiture !? вы имеете в виду Подпись? –