Два списка

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Благодарностей
70
Баллы
28
Есть два списка.
Список 1 имеет размер более 1Гб
Список 2 размером 800Мб
Задача взять строку из списка 2 и проверить есть ли такая строка в списке 1.
Как это дело организовать, что бы работало быстро?
 

username666

Client
Регистрация
20.03.2020
Сообщения
211
Благодарностей
89
Баллы
28
Попробовать этот код. Не знаю справится ли с таким объемом, но в 10 раз меньше вполне быстро выполняет. А перебором, наверное, в любом случае долго будет.
C#:
List<string> bad = project.Lists["стоплист"].ToList();//стопслова
List<string> mix = project.Lists["все в куче"].ToList();//потенциальные счастливцы
var good =project.Lists["листсчастья и печенек"];//те, кото будем осчастливливать точно
List<string> kostyl = new List<string>();//важный элемент индусского кода
//блок очень сложного индусского кода
kostyl=mix.Except(bad).ToList();
foreach(string data in kostyl)
{good.Add(data);}
 
  • Спасибо
Реакции: ledsan

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Благодарностей
70
Баллы
28
Попробовать этот код. Не знаю справится ли с таким объемом, но в 10 раз меньше вполне быстро выполняет. А перебором, наверное, в любом случае долго будет.
C#:
List<string> bad = project.Lists["стоплист"].ToList();//стопслова
List<string> mix = project.Lists["все в куче"].ToList();//потенциальные счастливцы
var good =project.Lists["листсчастья и печенек"];//те, кото будем осчастливливать точно
List<string> kostyl = new List<string>();//важный элемент индусского кода
//блок очень сложного индусского кода
kostyl=mix.Except(bad).ToList();
foreach(string data in kostyl)
{good.Add(data);}
Медленно, очень медленно, но спасибо!
 

AIVA583

Пользователь
Регистрация
02.09.2022
Сообщения
56
Благодарностей
9
Баллы
8

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 245
Благодарностей
673
Баллы
113
Есть два списка.
Список 1 имеет размер более 1Гб
Список 2 размером 800Мб
Задача взять строку из списка 2 и проверить есть ли такая строка в списке 1.
Как это дело организовать, что бы работало быстро?
А дальше что? Ну допустим есть строка из списка 2 в списке 1, что с ней сделать то надо?
 

cooki

Client
Регистрация
05.10.2014
Сообщения
176
Благодарностей
42
Баллы
28
если надо сравнить два файла, то Text Utils Pack делает это с большими файлами, а Arhivar с ТБ файлами работает.
 
  • Спасибо
Реакции: ledsan и djaga

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Благодарностей
70
Баллы
28
А дальше что? Ну допустим есть строка из списка 2 в списке 1, что с ней сделать то надо?
дальше если есть совпадение я сохраняю строку, с логикой нет проблем, проблема скорость чтения (сравнения, поиска)
 

daVinchi

Client
Регистрация
11.01.2019
Сообщения
59
Благодарностей
67
Баллы
18

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Благодарностей
70
Баллы
28
если надо сравнить два файла, то Text Utils Pack делает это с большими файлами, а Arhivar с ТБ файлами работает.
Погуглил, очень интересное решение но где скачать так и не нашел, ссылки битые или сайтов ваще уже не существует.
 

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Благодарностей
70
Баллы
28
Для понимания какая скорость у меня сейчас и как реализовано на данный момент.
Текущая на данный момент скорость 35 000 000 сравнений в сутки (393 в секунду), Список 1 находится в сети и запрос я делаю через кубик гет а ответ уже чекаю через иф.
Список 1 есть у меня скаченный хотелось бы реализовать его, что бы все работало без сети.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 410
Благодарностей
5 454
Баллы
113

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Благодарностей
70
Баллы
28
в ZP и PM запускал примерно 4-5 секунд одино сравнение, когда сейчас через гет запрос почти 400 в секунду.
Проблема понятна это размер файлов, если Список 2 можно разбить на более мелкие списки (что и сделано) то вот Список 1 он цельный.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 410
Благодарностей
5 454
Баллы
113
в ZP и PM запускал примерно 4-5 секунд одино сравнение, когда сейчас через гет запрос почти 400 в секунду.
Проблема понятна это размер файлов, если Список 2 можно разбить на более мелкие списки (что и сделано) то вот Список 1 он цельный.
такое на бд лучше переводить.
 

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Благодарностей
70
Баллы
28

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 410
Благодарностей
5 454
Баллы
113
а где подглядеть можно это, начиная от поднятие бд локальной и до ее женитьбой с зенкой?
не подскажу, не оч силен в бд, мускул юзай, опен сервер установи на комп.
 
  • Спасибо
Реакции: ledsan

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 245
Благодарностей
673
Баллы
113
дальше если есть совпадение я сохраняю строку, с логикой нет проблем, проблема скорость чтения (сравнения, поиска)
Если требуется работа с таким количеством данных, то выше подсказали правильно, надо накатывать СУБД создавать БД, добавлять в нее все ваши данные из списка, что тоже время займет и уже на чистом SQL производить операции. В любом случае изучайте СУБД и чистый SQL т.к приемлемо работать с таким большим количеством данных возможно только через БД. Установить СУБД вообще не проблема, выбираете которая больше нравится ( MySQL Microsoft SQL Server , PostgreSQL ) это вот 3 основных, в целом похожие, синтаксис и интерфейс ток мальца различаются. Скачиваете устанавливаете, там ничего сложного, а потом уже подрубаете конкретную либу вашей СУБД в проект, а там уже начинаете SQL изучать, запрос на подключение к базе составлять, создавать там таблицы, и вносить требуемые данные, затем их уже можно будет сравнить. Если SQL не нравится то есть еще пару вариантов для работы с БД, это linqToSQL и EntitiFramework тут уже работа чисто на коде осуществляется.
 
  • Спасибо
Реакции: ledsan

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)