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



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

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

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

ONLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:519д 23ч 57м
652

Всем привет!

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

 

подробнее:

есть две базы

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

новая - 100мг

 

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

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

 

 


    • 0
  • Наверх

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

OFFLINE Отправлено

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

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


    • 0
  • Наверх

OFFLINE Отправлено

r.zaharchenko
Активный
  • Онлайн:32д 17ч 37м
70

Всем привет!

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

 

подробнее:

есть две базы

общая - размер 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 Отправлено

Pleorin
Активный
  • Онлайн:13д 5ч 35м
58

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

sms-online.pro - новый, динамически развивающийся, сайт по SMS активациям почти любого сервиса!

Наш сервис полностью автоматизирован
Мы можем похвастаться не только высокой скоростью работы сайта, но и скоростью предоставления SMS сообщений.
Прием SMS от 1.7 р!

Большой выбор стран!

0857741a94ee60ff651ae6730881f767.gif

 

Так же приглашаем в наш магазин акков по оптовым ценам: opt-vk.ru

Индивидуальные предложения каждому!

Канал в Telegram:@smsonlinepro
Поддержка в Telegram: @Pleorin
Почта: support@sms-online.pro


Сообщение отредактировал Zismo-Support: 07 03 2019 - 21:58

    • 23
  • Наверх

ONLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:519д 23ч 57м
652

 

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

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
Активный
  • Онлайн:32д 17ч 37м
70

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


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

    • 0
  • Наверх

ONLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:519д 23ч 57м
652

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

 

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

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


    • 0
  • Наверх

OFFLINE Отправлено

r.zaharchenko
Активный
  • Онлайн:32д 17ч 37м
70

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

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

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


    • 0
  • Наверх

ONLINE Отправлено

zuzu7777
Продвинутый
  • Онлайн:519д 23ч 57м
652

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

 

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

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


    • 0
  • Наверх

OFFLINE Отправлено

r.zaharchenko
Активный
  • Онлайн:32д 17ч 37м
70

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

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

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


    • 0
  • Наверх

OFFLINE Отправлено

romchek
Активный
  • Онлайн:24д 4ч 9м
35

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


    • 0
  • Наверх

OFFLINE Отправлено

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

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


    • 0
  • Наверх