Комментарии 7
Ээээ… это переизобретение суффиксного дерева?
В ImageFileInspector замените
тогда ваша программа заработает в разы быстрее. Да и вообще весь этот бор
кажется лишним, помоему хватило бы простого словаря.
List<HashTreeNode> endNodes
наHashSet<HashTreeNode> endNodes
тогда ваша программа заработает в разы быстрее. Да и вообще весь этот бор
кажется лишним, помоему хватило бы простого словаря.
Существенного прироста производительности не даст. EndNodes — это уже конечный список, который не учавствует в построении дерева. Временные затраты на его обработку при использовании List на два порядка ниже чем на построение дерева что видно по результату теста.
Время поиска дубликатов(построение дерева): 117 секунд (2 минуты)
Время на обработку конечных узлов и копирование файлов: 6 секундкопирование
Время поиска дубликатов(построение дерева): 117 секунд (2 минуты)
Время на обработку конечных узлов и копирование файлов: 6 секундкопирование
Как это не участвует?
Вы в LoadCurrentImage используете следующую конструкцию:
Contains это линейная операция на списке и практически константная на множестве, что
даст огромный выигрыш в производительности.
Вы в LoadCurrentImage используете следующую конструкцию:
if ( !endNodes.Contains( node ) )
endNodes.Add( node );
Contains это линейная операция на списке и практически константная на множестве, что
даст огромный выигрыш в производительности.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Быстрый поиск совпадений объектов по их контрольным суммам на примере поиска дублирующихся изображений