Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.190.207.144] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Существует маленькая вероятность что если 2 одинаковых файла имеют одинаковый размер, дату изменения и имя то они будут различны по содержанию.
|
Сообщ.
#17
,
|
|
|
Цитата Славян @ Раз так, то постараюсь тоже зайти с несколько боковой стороны: 1. Смотрите, пусть люди хотят сравнить картинки. Алгоритм может быстро пробежаться по файлам, посмотреть размеры картинок и выдать "не равны", если уже размеры разные. Тогда давайте запустим процедуру сравнения файлов. И, скорее всего, окажется, что по-байтное сравнение быстрее, чем расчёт хеша. А если сравнивать не понадобится, а мы считаем это хеш для всех файлов.. --- Кстати, из чего следует, что не будет "коллизий" ? Файлы разные, а хеши одинаковые, и что тогда ? |
Сообщ.
#18
,
|
|
|
Цитата ЫукпШ @ Так конечно быстрее! Но суть же в том, что хэши считаются всегда и в фоновом, а проверки нужны редко. И в эти редкие случаи будут "выстреливать" "на ура" случаи совпадения!И, скорее всего, окажется, что по-байтное сравнение быстрее, чем расчёт хеша. А если сравнивать не понадобится, а мы считаем это хеш для всех файлов.. Цитата ЫукпШ @ Не следует. Сие - проблема.Кстати, из чего следует, что не будет "коллизий" ? Цитата ЫукпШ @ Тут надо додумать на каких вариантах будем пренебрегать, а когда важно. Т.е., скажем, если человек песенку сравнил и в ней коллизия, то проиграем ложную, а от него пусть придёт отчёт, что коллизия и надо почётче. А если не пришло, то наверное коллизия ушла в шумы и чёрт с ней. А вот если там какой-то важный системный файл, то можно и тщательнее смотреть.Файлы разные, а хеши одинаковые, и что тогда ? Одним словом, додумать надо детали. |
Сообщ.
#19
,
|
|
|
Сравнение хэшей помогает, если файлов больше 2, и только если они не все одинаковые, иначе в конце концов их все равно придётся сравнивать.
Или если проверяется изменение файла. Тогда можно хранить старую копию на медленном носителе, и вообще не читать его, если хэш отличается. В случае длинного хэша можно даже пренебречь малой вероятностью коллизии хэшей при изменении. Если надо сравнить несколько файлов между собой, их, в принципе, можно сравнить кусками за один проход чтения. По времени это может оказаться сравнимым с вычислением хэшей, и последующим сравнением этих кэшей, если хэши окажутся разными. Если хотя бы пара хэшей совпадут, придётся ещё раз перечитать соответствующие файлы, и вариант с хэшами окажется медленнее. |