|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|||||||||||
Список для максимально быстрого поиска по нему26.08.2015, 20:09. Показов 6927. Ответов 29
Метки нет (Все метки)
Сейчас у меня есть два списка строк - List<string> один MainBase, второй TempBase, мне надо выбрать из TempBase все строчки, которых нет в MainBase, ну что бы потом их добавить в MainBase.
Программа работает в многопоточном режиме, много этих MainBase и они относительно большие, короче при относительном количестве потоков неплохо загружает процессор, я так подозреваю из за поиска. Сейчас выборку я делаю так:
0
|
|||||||||||
| 26.08.2015, 20:09 | |
|
Ответы с готовыми решениями:
29
Оптимизировать структуру таблицы для быстрого поиска Хэш-таблица для быстрого поиска строки в массиве Отсортированный хэш-вектор бинарной схожести для быстрого поиска |
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|
| 26.08.2015, 20:13 | |
|
Попробуй склеить mainbase и tempbase и удалить дубликаты.
Удаление дубликатов с массива Псевдокод: mainbase += tempbase; //addrange там надо или типа того mainbase.Distinct();
1
|
|
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||||||
| 26.08.2015, 20:21 [ТС] | ||||||
|
Woldemar89, а как быть с:
0
|
||||||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||||||
| 26.08.2015, 20:34 | ||||||
|
https://msdn.microsoft.com/ru-... .110).aspx
Distinct: Возвращает различающиеся элементы последовательности, используя для сравнения значений компаратор проверки на равенство по умолчанию. Метод Distinct перегружен несколько раз, одна из перегрузок позволяет передать как параметр функцию компаратор, - в ней выполняй действия и сравнивай. Пример с компаратором в ссылке есть вроде. Добавлено через 6 минут Примерно что то типа того должно быть, если не ошибаюсь.
1
|
||||||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|
| 26.08.2015, 20:35 [ТС] | |
|
Спасибо, по ссылке я еще нашел SortedSet и HashSet, я протестирую List.Distinct, SortedSet и HashSet, посмотрим что из этого всего будет работать быстрее на том и остановлюсь, мне почему то кажется SortedSet
0
|
|
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|
| 26.08.2015, 20:45 | |
|
Отпишись с кусочком кода, если не трудно, как сделаешь.
1
|
|
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|||||||
| 26.08.2015, 21:41 [ТС] | |||||||
0
|
|||||||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||
| 26.08.2015, 21:45 | ||
|
естественно бегать не обязательно в цикле, наверняка какая нибудь лямбда существует для этого. Или попробуй перед добавлением в List строки, делать над ней Trim() итд.
1
|
||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||
| 26.08.2015, 21:53 [ТС] | ||
|
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||
| 26.08.2015, 21:56 | ||
|
1
|
||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|
| 26.08.2015, 22:10 [ТС] | |
|
короче жесть, выискал 2 файла, один 532641 строк (основной) второй 150309
сделал тест, HashSet и SortedSet отработали, HashSet на много быстрее, а вот перебор как я показал в начале темы или тоже самое только через просто цикл тупит уже минут 5 и результата нет пока что. Как будет выложу.
0
|
|
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||||
| 26.08.2015, 22:14 | ||||
|
В потоках счетчик запили, чтоб следить за процессом.
1
|
||||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||||||
| 26.08.2015, 22:27 [ТС] | ||||||
|
короче результаты странные и они меня шокировали, может я что то сделал не так?
Кликните здесь для просмотра всего текста
TestSortedSet: на добавление списка в SortedSet понадобилось 2630 на добавление новых, не повторяющихся элементов 674 TestHashSet: на добавление списка в SortedSet понадобилось 101 на добавление новых, не повторяющихся элементов 69 TestLinq: где 5 минут тупило, после чего я закрыл программу TestFor: где 5 минут тупило, после чего я закрыл программу TestExt: на получение новых элементов ушло 243 PS может я что то не так делал?
1
|
||||||
|
Заблокирован
|
|
| 26.08.2015, 22:36 | |
|
0
|
|
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
||
| 26.08.2015, 22:43 [ТС] | ||
|
Так же вопрос к TestSortedSet, вроде как сортированный список но почему вставка новых элементов происходит медленнее чем у TestHashSet, ведь при сортировке поиск быстрее должен происходить (пузырчатый поиск если мне не изменяет память а не просто перебор)
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||||||||||||||||
| 26.08.2015, 22:44 | ||||||||||||||||
TestLinq:
TestSortedSet - походу, сортирует на каждом шаге, поэтому медленней. TestHashSet - походу, оптимально TestExt - цикл не вложенный, как в TestFor или TestLinq, поэтому смотрится более менее. Думаю, тут все правильно. Сомнения только в TestLinq, вдруг попроще можно.
0
|
||||||||||||||||
|
Заблокирован
|
|
| 26.08.2015, 22:47 | |
|
2
|
|
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||||
| 26.08.2015, 22:49 | ||||
1
|
||||
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
|
|
| 26.08.2015, 22:52 [ТС] | |
|
0
|
|
|
|
|||
| 26.08.2015, 22:55 | |||
Сообщение было отмечено VLK как решение
РешениеПочитайте про структуры данных и их отличия друг от друга. И тогда не придется делать "шокирующие открытия".
1
|
|||
| 26.08.2015, 22:55 | |
|
Помогаю со студенческими работами здесь
20
Разработка приложения для более быстрого, индексированного поиска файлов по заданному имени (хэширование) Алгоритм быстрого поиска Конец "быстрого поиска"? Задача быстрого поиска Метод быстрого последовательного поиска Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|