Проблемы с подсчётом хешей большого количества файлов

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

Модератор: motyara

Ответить
Аватара пользователя
Qwertiy
Охотник за багами
Сообщения: 1199
Зарегистрирован: Вс янв 31, 2010 12:12 am

Проблемы с подсчётом хешей большого количества файлов

Сообщение Qwertiy »

Собственно, две проблемы.

1. При подсчёте хешей большого числа файлов файл с хешами постоянно перезаписывается, что означает, что между подсчётами хешей файлов по несколько килобайт записывается 60 мегабайт хешей всех файлов. Это катастрофически сказывается на скорости и подсчёт большого числа хешей становится невозможным. Надо просто дописывать хэш в файл, не перечитывая и не перезаписывая его полностью.

2. При установке хеширования на паузу есть вероятность сохранения файла с нулевым размером. Видимо, при этом все 60 МБ хешей находятся исключительно в памяти. Во-первых, это само по себе плохо, во-вторых, почему установка на паузу происходит в таком месте, а не после завершения записи файла с хэшами?
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

1. Есть вещи, которые не предполагаются среднестатистическим использованием программы. Не предполагается чья-либо необходимость создавать 60-мегабайтные файлы с хэшами, как и не предполагается копирование файлов размером больше чем 30 эксабайт, как и не предполагается что пользователь обладает каталогами, внутри которых сбросано более чем 20 тысяч файлов. Возможно когда-нибудь функция будет модифицирована под экзотику.
2. Вероятность сохранения в такой ситуации файла с нулевым размером действительно существует и равна 0%. Полагаю, эта вероятность не так уж страшна, чтобы обходить ее стороной, ведь вероятность угадывания с первой попытки 4-килобитного ключа гораздо выше.
Аватара пользователя
Qwertiy
Охотник за багами
Сообщения: 1199
Зарегистрирован: Вс янв 31, 2010 12:12 am

Сообщение Qwertiy »

1. http://russian.joelonsoftware.com/Artic ... asics.html
2. Или 90%, если размер файла с хешами 60МБ, а размер хешируемых файлов 30 КБ.
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

В связи с чем заявлено увеличение вероятности от 0% аж до 90%? Были ли проведены какие-либо тесты, которые доказывают этот факт, произошла ли на практике утрата содержимого файла при факте что ни Unreal Commander не был завершен принудительно, ни операционная система не вылетела в синий экран? Если ничего этого не было, то ни о каких 90% речь идти не может, так как это просто ошибочные домыслы.
avmaksimov
Сообщения: 405
Зарегистрирован: Чт ноя 08, 2007 9:29 am
Откуда: Москва
Контактная информация:

Re: Проблемы с подсчётом хешей большого количества файлов

Сообщение avmaksimov »

Со вторым, конечно, можно поспорить, но дописывать всегда лучше, чем хранить в памяти и скидывать целиком буфер. И память оптимальнее расходуется, и диски меньше изнашиваются, да и процесс будет быстрее идти.

А насчёт того, что предполагается - ведь, нигде не написано какое-либо ограничение)).
С уважением, Андрей.
Аватара пользователя
Max Diesel
Автор программы
Сообщения: 3431
Зарегистрирован: Пт окт 12, 2007 3:26 pm
Контактная информация:

Сообщение Max Diesel »

Уже давно используется дописывание, впрочем увеличение скорости если уж и заметно, то лишь на большом количестве очень мелких файлов.
avmaksimov
Сообщения: 405
Зарегистрирован: Чт ноя 08, 2007 9:29 am
Откуда: Москва
Контактная информация:

Re:

Сообщение avmaksimov »

Max Diesel писал(а): Ср мар 31, 2021 10:28 am Уже давно используется дописывание, впрочем увеличение скорости если уж и заметно, то лишь на большом количестве очень мелких файлов.
Кстати, как раз и заметил. У меня как раз был такой случай. Хотел дополнительно проверить md5 всех своих фоток).

Благодарю за ответ и улучшения.
С уважением, Андрей.
Ответить