?

Log in

entries friends calendar profile Previous Previous Next Next
Тестирование AntiDupl.NET на коллекции с 1 миллионом картинок. - antidupl
antidupl
antidupl
Тестирование AntiDupl.NET на коллекции с 1 миллионом картинок.
Постепенно в течении нескольких месяцев накачал коллекцию изображений количеством 1 млн штук (общий вес 55 GB).
Почему 1 миллион? Ну во первых, для ровного счета, во вторых потому, что при типичных настройках поиска именно это размер коллекции является критическим для программы. Программа собирает данные для быстрого сравнения - чуть менее 2 кб на одно изображения, и соответственно для 1 миллиона картинок требуется чуть менее 2 GB  памяти - теоретический максимум, что может получить программа от 32-битной Windows.

По результатам тестирования можно сказать следующее:
1) Ядро программы с этой задачей вполне справилось. Да оно съедает почти всю доступную приложению память, но успешно сканирует всю коллекцию.
2) Оболочка .NET справляется со своей задачей гораздо хуже. При отображении результатов поиска практически гарантированно происходит падение из-за нехватки памяти. Причем это наблюдается и при не слишком большом количестве результатов. Не помогает выгрузка файла изображений - видимо в процессе поиска происходит дефрагментация памяти, и .NET не может найти для своей работы достаточно большие непрерывные куски. 
Следует отметить, что стандартная таблица плохо приспособлены для отображения большого количества результатов  - мне и так пришлось переписать значительное количество  его методов... если так пойдет дальше то наверное проще будет написать свой собственный компонент с нуля.
3) Неприятным сюрпризом стало то, что Windows очень медленно осуществляет поиск файлов в такой большой коллекции - видимо он у нее не влазит в кэши. В результате при повторном поиске большую часть времени стал занимать не сам поиск дубликатов, а составление списка изображений.

И так можно сделать вывод (если у вас много оперативной памяти на ПК):
1) Ядро пригодно для сканирования коллекций с количеством изображений до 1миллиона штук.
2) Оболочка сносно работает при количестве изображений в коллекции до 700 тыс штук и количестве результатов до 150 тыс штук.
3) Преодоление этих пределов возможно для 64-битной версии программы, которую только предстоит написать.
4) Возможно частичное расширение этих диапазонов при использовании параметра отнормированный размер картинок = 16х16 (не тестировалось).
Leave a comment