![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Neox_GeForce |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
Мне нужно искать дубликаты файлов. Я решил найти контрольные суммы файлов и их сравнивать.
Но какой мне алгоритм использовать CRC32, MD5,SHA1 какой самый самый быстрый??????? -------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
| DVariuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: 5 Всего: 8 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
CRC32 конечно можно подсчитать быстрее, но не надо забывать о коллизиях, речь идет о хэше файлов на диске - их реально много и повторения могут случаться (особенно учитывая законы Мэрфи). По скорости Adler32 вроде быстрее CRC32. Но я бы использовал MD5 или SHA1. Надежность важнее |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
отвечаю на вопрос заданный в соседней теме тем же автором, место этого вопроса здесь, так как он связан с этим топиком.
не думаю что кто нибудь сможет ответить на этот вопрос. Таких чисел никто не называeт, просто знай что CRC32 имеет низкую вероятность коллизий, но все же выше чем MD5 и SHA1. Для коротких текстов вероятность коллизий почти достигает нуля..но в том то и дело что почти это все теория. Это сообщение отредактировал(а) azesmcar - 22.5.2009, 13:45 |
|||
|
||||
| Neox_GeForce |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
Мне нужно найти дубликаты файлов и вывести путь до груп дубликатов. Я решил делать поиск по контрольной сумме. но там задача что есть несколько сотен тисяч файлов и макс размер до 2гб.+программа должна быть производительней.
Я придумал такой алгоритм: 1. Сохраняем сумму и путь к файлу у списке. 2. потом ищу одинаковые значение к.с еще раз по точнее проверяю ети файли. Вывожу результати. Вот такое я придумал. -------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
в принципе не страшно..можно и CRC32..а когда найдешь дубликаты - вот тогда можно проверить и остальными чтобы удостоверится. я бы сделал так. 1. Проверить размеры файлов - если не одинаковые - даже не считать сумму. 2. Если размеры одинаковые - подсчитать CRC32, проверить, если не одинаковые - забыть про этот файл и идти дальше 3. Если CRC32 одинаковые - проверить сумму MD5. сводится к тому чтобы обращатся к сложным и медленным алгоритмам как можно реже. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
Neox_GeForce, можешь еще добавить
1. Сравнение размера. 2. Рассчет и кэширование контрольной суммы только при нахождении файлов с одинаковым размером. Добавлено через 31 секунду azesmcar, обогнал... |
|||
|
||||
| Neox_GeForce |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
вижу надо какие то исходники показать.
Добавлено через 13 минут и 58 секунд
так надо сохранить размер файла-путь к файлу а потом искать одинаковые размеры. да?? Присоединённый файл ( Кол-во скачиваний: 13 )
Comparer.rar 67,34 Kb-------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
||||
|
||||
| Neox_GeForce |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
а хорошо ли я сохраняю списко файлов
-------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
Neox_GeForce
Я бы хранил в Dictionary Ключ - размер файла, значение - путь к файлу. Если такой размер уже есть, выделаешь в отдельный контейнер для дальнейшего сравнения. Типа того. |
|||
|
||||
| Neox_GeForce |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
не это для меня засложно.
Это сообщение отредактировал(а) Neox_GeForce - 22.5.2009, 15:47 -------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
Neox_GeForce
что тут сложного то? подожди, попозже скину примеры (хотя может до меня это кто нибудь другой сделает) Это сообщение отредактировал(а) azesmcar - 22.5.2009, 15:32 |
|||
|
||||
| Neox_GeForce |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
думаю использовать SortedList
но вот если будут одинаковые раззмеры файлов то нужно вновь создавать список.а я не знаю как . -------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
после выполнения - в переменной files у нас лежат все файлы каталога с тем же самым размером. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |