Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск дубликатов, контрольные суммы 
:(
    Опции темы
Любитель
Дата 24.5.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



GetHashCode у тебя опять очень неоптимально перегружен. Ещё раз - при каждом добавлении в дикшенри будет считаться хеш (не CRC32 и пр., а тот, который GetHashCode) добавляемого ключа. А затем уже (в случае колизий) - Equals. Учитывая, что файлов с одним размером не так уж много - в GetHashCode достаточно вернуть length.


--------------------
PM MAIL ICQ Skype   Вверх
Neox_GeForce
Дата 24.5.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 14.11.2007
Где: Украина

Репутация: нет
Всего: нет



я вот так сделал:
Код

  public override bool Equals(object obj)
            {
                CustomKey otherKey = obj as CustomKey;
                if (otherKey != null && otherKey.length == this.length)
                {
                    if (otherKey.Hash == this.Hash) return true;
                    else return false;
                }
                else
                    return false;
             // return otherKey != null && otherKey.length== this.length && otherKey.Hash == this.Hash; 
            }
            public override int GetHashCode()
            {
             
               return (int)this.Length;
            }




и не знаю что быстрее будет работать в Equals
и что 

Код

private uint? hash = null;

знак вопроса значит? догадался что можно нуллом инициализироаать, а по точнее?

Это сообщение отредактировал(а) Neox_GeForce - 24.5.2009, 19:29


--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
Любитель
Дата 24.5.2009, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(Neox_GeForce @  24.5.2009,  19:21 Найти цитируемый пост)
я вот так сделал:

Equals до этого был нормальный. GetHashCode сейчас тоже. "Вопросик" - это nullable типы. Читай синтаксис C# 2.0. Но это уже оффтопик..


--------------------
PM MAIL ICQ Skype   Вверх
Neox_GeForce
Дата 24.5.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 14.11.2007
Где: Украина

Репутация: нет
Всего: нет



Кажется сделал. Любитель Огромное спасибо!!!

Добавлено @ 00:03
Но может есть другой алгоритм поиска дубликатов?  smile Побыстрее бы smile

диск С: за 40 мин 103802 файлов
диск Е: за 2.5 мин 9398 файлов

Это сообщение отредактировал(а) Neox_GeForce - 25.5.2009, 00:36

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  Comparer.rar 69,29 Kb


--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
marionet
Дата 6.9.2011, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.9.2011

Репутация: нет
Всего: нет



привет всем !!! у меня похожа проблема только дубликаты нужно искать путем сравнения размера файлов, даты их последнего изменения и названия.
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.