|
Модераторы: Poseidon, Snowy, bems, MetalFan |
|
Campus2000 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 16.2.2018 Репутация: нет Всего: нет |
Добрый день, Уважаемые форумчане.
У меня возник такой вопрос: Строки текстового файла 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 (Загрузка в память):
Проблема в следующем: Если файл размеров 500 мегабайт то вся память забивается и выскакивает ошибка - Out of memory. Ну это само собой понятно поскольку я загружаю и обрабатываю все в памяти. Вопрос: Может как то можно оптимизировать код в этом варианте, кто что может подсказать ? Вариант №2 (Чтение построчно):
Проблема в следующем: Очень и очень медленно работает, ну и тут принцип понятен: 1.Читаем строку из 1.txt файла 2.Открываем 2.txt, проходим по нему ищем совпадение 3.Закрываем 2.txt файл И так для каждой строки из первого файла. Это куча времени и затрат. Вопрос, скорее всего утверждение: В этом варианте, само собой понятно что далеко не уедешь. П.С: Подскажите еще варианты, при использования которых, можно обрабатывать файлы до 1 гигабайта, не загружая память и при этом, иметь, хотя бы, среднюю скорость обработки ?. Заранее благодарен за помощь... |
||||
|
|||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
для ускорения роботы с файлами используйте отображение в память файлов,
для ускорения поиска можно использовать аналоги хеш функций, или сравнивать сначала по первому символу, при совпадении сравнивать всю строку... имхо данная задача и дельфи не совсем совместимы.... почему не воспользоваться допустим базой данных... иль другими языками, которые специально сделать для текстовых обработок? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Для ускорения... пинка под зад.
@Romikgy Ты издеваешься ? Там же паскаль. Значит школьник или студент. Какие мапы в память ? @Campus2000 Тебе еще пока рано думать о редакторе файлов овер 9000 размера. Чуть позже познакомишься с маппингом файлов в память. И поймешь что не всегда это добро (когда оперативки маловато). Вобщем у тебя еще вся жизнь впереди |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
_zorn_, нет , не издеваюсь , а советую то, что посчитал нужным....
PS А вас сударь кажется немного понесло ... вы даже в некоторых постах опускаетесь до мата.... так что тормозните слегка...ИМХО PSS и телепат из вас никакой... Это сообщение отредактировал(а) Romikgy - 19.10.2018, 19:21 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |