В дополнение к этому вопросу: Алгоритм определения идентичности файлов
Recap. Я ищу дешевый алгоритм определения идентичности файлов, который работает в большинстве случаев.
Я пошел вперед и реализовал алгоритм, который дает мне "довольно уникальный" хеш для каждого файла.
Как работает мой алгоритм:
-
Для файлов, меньших определенного порога, я использую полный файл для хеширования идентификаторов.
-
Для файлов, больших порога, я беру случайные N выборок размера X.
-
Я включаю файлы в хешированные данные. (что означает, что все файлы разных размеров приводят к другому хэшу)
Вопросы:
-
Какие значения я должен выбрать для N и X (сколько случайных выборок следует взять с каким размером?) Я пошел с 4 образцами по 8 К каждый и не умею пнуть алгоритм. Я обнаружил, что увеличение количества выборок быстро снижает скорость алгоритма (потому что поиски довольно дороги)
-
Математика одна: как не разные мои файлы должны быть для того, чтобы этот алгоритм взорвался. (2 разных файла с одинаковой длиной в конечном итоге имеют одинаковый хэш)
-
Оптимизация: Есть ли способ, которым я могу оптимизировать свою конкретную реализацию для повышения пропускной способности (я, кажется, способен делать около 100 файлов в секунду в моей системе).
-
Является ли эта реализация понятной? Можете ли вы подумать о каких-либо реальных примерах мира, где это провалится. (Мое внимание сосредоточено на медиафайлах)
Соответствующая информация:
Алгоритм, который я реализовал
Спасибо за вашу помощь!