Два списка

  • Автор темы Автор темы ledsan
  • Дата начала Дата начала

ledsan

Client
Регистрация
15.02.2022
Сообщения
324
Реакции
71
Баллы
28
Есть два списка.
Список 1 имеет размер более 1Гб
Список 2 размером 800Мб
Задача взять строку из списка 2 и проверить есть ли такая строка в списке 1.
Как это дело организовать, что бы работало быстро?
 
Попробовать этот код. Не знаю справится ли с таким объемом, но в 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
Попробовать этот код. Не знаю справится ли с таким объемом, но в 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);}
Медленно, очень медленно, но спасибо!
 
Есть два списка.
Список 1 имеет размер более 1Гб
Список 2 размером 800Мб
Задача взять строку из списка 2 и проверить есть ли такая строка в списке 1.
Как это дело организовать, что бы работало быстро?
А дальше что? Ну допустим есть строка из списка 2 в списке 1, что с ней сделать то надо?
 
если надо сравнить два файла, то Text Utils Pack делает это с большими файлами, а Arhivar с ТБ файлами работает.
 
  • Оценить
Реакции: ledsan и djaga
А дальше что? Ну допустим есть строка из списка 2 в списке 1, что с ней сделать то надо?
дальше если есть совпадение я сохраняю строку, с логикой нет проблем, проблема скорость чтения (сравнения, поиска)
 
если надо сравнить два файла, то Text Utils Pack делает это с большими файлами, а Arhivar с ТБ файлами работает.
Погуглил, очень интересное решение но где скачать так и не нашел, ссылки битые или сайтов ваще уже не существует.
 
Для понимания какая скорость у меня сейчас и как реализовано на данный момент.
Текущая на данный момент скорость 35 000 000 сравнений в сутки (393 в секунду), Список 1 находится в сети и запрос я делаю через кубик гет а ответ уже чекаю через иф.
Список 1 есть у меня скаченный хотелось бы реализовать его, что бы все работало без сети.
 
в ZP и PM запускал примерно 4-5 секунд одино сравнение, когда сейчас через гет запрос почти 400 в секунду.
Проблема понятна это размер файлов, если Список 2 можно разбить на более мелкие списки (что и сделано) то вот Список 1 он цельный.
 
в ZP и PM запускал примерно 4-5 секунд одино сравнение, когда сейчас через гет запрос почти 400 в секунду.
Проблема понятна это размер файлов, если Список 2 можно разбить на более мелкие списки (что и сделано) то вот Список 1 он цельный.
такое на бд лучше переводить.
 
а где подглядеть можно это, начиная от поднятие бд локальной и до ее женитьбой с зенкой?
не подскажу, не оч силен в бд, мускул юзай, опен сервер установи на комп.
 
  • Оценить
Реакции: ledsan
дальше если есть совпадение я сохраняю строку, с логикой нет проблем, проблема скорость чтения (сравнения, поиска)
Если требуется работа с таким количеством данных, то выше подсказали правильно, надо накатывать СУБД создавать БД, добавлять в нее все ваши данные из списка, что тоже время займет и уже на чистом SQL производить операции. В любом случае изучайте СУБД и чистый SQL т.к приемлемо работать с таким большим количеством данных возможно только через БД. Установить СУБД вообще не проблема, выбираете которая больше нравится ( MySQL Microsoft SQL Server , PostgreSQL ) это вот 3 основных, в целом похожие, синтаксис и интерфейс ток мальца различаются. Скачиваете устанавливаете, там ничего сложного, а потом уже подрубаете конкретную либу вашей СУБД в проект, а там уже начинаете SQL изучать, запрос на подключение к базе составлять, создавать там таблицы, и вносить требуемые данные, затем их уже можно будет сравнить. Если SQL не нравится то есть еще пару вариантов для работы с БД, это linqToSQL и EntitiFramework тут уже работа чисто на коде осуществляется.
 
  • Оценить
Реакции: ledsan

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