Перейти к содержимому



Купить ссылку здесь
Фотография

[C#]Подскажите как реализуется сравнение файлов?

Форум ZiSMO.biz
10
Сообщений в теме: 10

OFFLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:505д 16ч 29м
650

Всем привет!

подскажите как сравнить  большие файлы?

 

подробнее:

есть две базы

общая - размер 60г(может быть как один так несколько)

новая - 100мг

 

мне нужно "новую" прогнать через "общую"  и получить уникальные строки

важный приоритет вопроса это скорость

 

 


    • 0
  • Наверх

Поделиться этим:

OFFLINE Отправлено

m_fartovij
Заблокированные
  • Онлайн:9ч 3м
7

Быстро не получится, строковые операции очень медленные. Я бы советовал поделить эти файлы на более мелкие и уже с ними работать.


    • 0
  • Наверх

OFFLINE Отправлено

r.zaharchenko
Premium plus
  • Онлайн:27д 3ч 4м
65

Всем привет!

подскажите как сравнить  большие файлы?

 

подробнее:

есть две базы

общая - размер 60г(может быть как один так несколько)

новая - 100мг

 

мне нужно "новую" прогнать через "общую"  и получить уникальные строки

важный приоритет вопроса это скорость

 

Попробуй вот так:

var file1 = new StreamReader("1.txt").ReadToEnd().Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries).ToList();
var file2 = new StreamReader("2.txt").ReadToEnd().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();


var res = new List<string>();


foreach (var f2 in file2)
{
var s = file1.Find(f => f == f2);
if(s != null) res.Add(f2);
}
file2 - новая база
file1 - старая

Сообщение отредактировал r.zaharchenko: 03 12 2018 - 01:31

    • 0
  • Наверх

Рекламный пост

OFFLINE Отправлено

Leongram
Premium plus
  • Онлайн:41д 53м
87

*
Популярное сообщение!

Внимание! Вышла новая версия программы Lеongram.com 3.0 - лучшая бесплатная программа для раскрутки в instаgram по мнению форума ZiSMO. 

 

Функции: Подписка ++ Отписка ++ Лайкинг ++ Автопостинг ++ Планировщик ++ Отмечалка по фото ++ Чистка от ботов

in-img1.png

В первый же день привлечете новых клиентов. Instagrаm не банит. Увеличится количество живых подписчиков, лайков и комментариев сразу же.

[Скачать бесплатно]

 

Функций больше, чем в других программах ++ Пользуйтесь бесплатно без ограничений по времени ++ Можно не оставлять компьютер включенным. 


Сообщение отредактировал The_Dark: 21 09 2018 - 23:50

Изображение
    • 45
  • Наверх

OFFLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:505д 16ч 29м
650

 

Попробуй вот так:

var file1 = new StreamReader("1.txt").ReadToEnd().Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries).ToList();
var file2 = new StreamReader("2.txt").ReadToEnd().Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();


var res = new List<string>();


foreach (var f2 in file2)
{
var s = file1.Find(f => f == f2);
if(s != null) res.Add(f2);
}
file2 - новая база
file1 - старая

 

 

так не прокатит

у тебя файл с разу в память считывается, при таких объемах будет ошибка памяти

и это не рационально


Сообщение отредактировал zuzu7777: 03 12 2018 - 01:50

    • 0
  • Наверх

OFFLINE Отправлено

r.zaharchenko
Premium plus
  • Онлайн:27д 3ч 4м
65

Ну тогда юзай БД, а не работай с файлами, и не будет тебе никаких проблем


Сообщение отредактировал r.zaharchenko: 03 12 2018 - 02:43

    • 0
  • Наверх

OFFLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:505д 16ч 29м
650

Ну тогда юзай БД, а не работай с файлами, и не будет тебе никаких проблем

 

а по подробней можешь о БД!?

Microsoft Access прокатит или эффект  не тот будет?


    • 0
  • Наверх

OFFLINE Отправлено

r.zaharchenko
Premium plus
  • Онлайн:27д 3ч 4м
65

а по подробней можешь о БД!?

Microsoft Access прокатит или эффект  не тот будет?

SQL, там твою задачу можно выполнить одним запросом и получить уникальные строки


    • 0
  • Наверх

OFFLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:505д 16ч 29м
650

SQL, там твою задачу можно выполнить одним запросом и получить уникальные строки

 

это должно на стороне сервера происходить, или можно как то без этого?

пни меня в нужном направлении?


    • 0
  • Наверх

OFFLINE Отправлено

r.zaharchenko
Premium plus
  • Онлайн:27д 3ч 4м
65

это должно на стороне сервера происходить, или можно как то без этого?

пни меня в нужном направлении?

https://kbss.ru/blog..._c_sharp/1.html
вообще гугли все по этой либе MySql.Data.MySqlClient


    • 0
  • Наверх

ONLINE Отправлено

romchek
Активный
  • Онлайн:19д 17ч 1м
31

В строки/стринг листы загонять такие объёмы данных ни к чему хорошему не приведет... Если только сделать что то типа частично читать большой файл, обрабатывать выбранную часть, потом брать следующую часть большого файла, итд пока не обработаем весь большой файл.


    • 0
  • Наверх

OFFLINE Отправлено

m_fartovij
Заблокированные
  • Онлайн:9ч 3м
7

Там размер базы - сотни гигов. Без деления эта прога будет год сравнивать... facepalm*2


    • 0
  • Наверх