|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.09.2018, 15:39 | #1 |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
Сравнение текстовых файлов \ Варианты
Добрый день, Уважаемые форумчане.
У меня возник такой вопрос: Строки текстового файла 1.txt необходимо проверить на совпадение - со строками текстового файла 2.txt. И уникальные строки, которых нет в файле 1.txt, записать в файл 3.txt. К примеру: Tекст в первом файле - 1.txt Test1 Test2 Test3 Test4 Test5 Текст во втором файле - 2.txt Test1 Test2 Test3 Test4 Test5 Stroka1 Stroka2 stroka3 После сравнения, результат в третьем файле - 3.txt Stroka1 Stroka2 stroka3 Вот мои решения и их недостатки => Вариант №1 (Загрузка в память): Код:
Вопрос: Может как то можно оптимизировать код в этом варианте, кто что может подсказать ? Вариант №2 (Чтение построчно): Код:
1.Читаем строку из 1.txt файла 2.Открываем 2.txt, проходим по нему ищем совпадение 3.Закрываем 2.txt файл И так для каждой строки из первого файла. Это куча времени и затрат. Вопрос, скорее всего утверждение: В этом варианте, само собой понятно что далеко не уедешь. П.С: Подскажите еще варианты, при использования которых, можно обрабатывать файлы до 1 гигабайта, не загружая память и при этом, иметь, хотя бы, среднюю скорость обработки ?. Заранее благодарен за помощь... Последний раз редактировалось Taras2018; 23.09.2018 в 15:48. |
23.09.2018, 19:50 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Вар 1. Out of memory
Не делать S1.Delete(j) иметь (завести) еще один массив SetLEngth(mm, s1.Count); в котором отмечать ОТМЕЧАТЬ(запоминать) строки для последующего удаления потом s2.Clear(Free) потом удалить помеченые и сохранить или же (если удаление снова даст outofmemory) ПОСТРОЧНАЯ запись в файл неотмеченных строк. вар2. не читать много-много раз один файл(2.txt) а считать его один раз в StringList и искать ТАМ.
программа — запись алгоритма на языке понятном транслятору
|
23.09.2018, 19:52 | #3 |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
|
23.09.2018, 19:58 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
комбинация вар1. и вар2
построчное чтение 1.txt (вар2) поиск прочитанной строки в StringList(вар1)
программа — запись алгоритма на языке понятном транслятору
|
24.09.2018, 08:45 | #5 |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
|
24.09.2018, 13:39 | #6 | ||||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
и какое количество строк в файлах? Цитата:
а в коде: Цитата:
как нужно то? Цитата:
выглядит это так: Код:
например, если отсортировать файл 2.txt, то можно воспользоваться индексированным поиском (см. метод Find()), который работает исключительно быстро. Последний раз редактировалось Serge_Bliznykov; 24.09.2018 в 13:42. |
||||
24.09.2018, 16:24 | #7 | |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
Цитата:
Нужно - Уникальные строчки ищутся в 1.txt А как код будет выглядеть методом метод Find() ? Размеры файлов по 500 мегабайт. Но к сожалению файл в память не помещается и все равно выскакивает ошибка нехватки памяти. Последний раз редактировалось Taras2018; 24.09.2018 в 16:34. |
|
24.09.2018, 16:40 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
да так же.
только добавится сортировка и вместо indexOf() будет вызов метода Find(): Код:
|
24.09.2018, 17:01 | #9 | |
Пользователь
Регистрация: 13.01.2018
Сообщений: 47
|
Цитата:
|
|
24.09.2018, 17:07 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я опечатался.
там, разумеется, ts2 должно быть: Код:
На большом файле, боюсь, что не дождётесь результатов. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TStringlist - сравнение текстовых файлов с ip и mac | Алиби | Общие вопросы Delphi | 3 | 27.12.2016 17:35 |
Сравнение текстовых файлов | demon-sheff | Общие вопросы Delphi | 3 | 20.05.2013 09:13 |
Сравнение строк двух текстовых файлов | Alina111 | Общие вопросы C/C++ | 4 | 10.01.2013 10:03 |
Самое быстрое сравнение текстовых файлов | blblbl-org | Общие вопросы Delphi | 17 | 26.04.2012 15:19 |
Сравнение текстовых файлов | BR17UY | Общие вопросы Delphi | 15 | 07.05.2007 20:18 |