Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2013, 02:49   #1
linap
Новичок
Джуниор
 
Регистрация: 30.05.2009
Сообщений: 2
По умолчанию Выборка данных из большого файла

Здравствуйте.
Есть файл, весом в 64 гб. Там больше 1кк строк. Нужно сделать из него выборку. Т.е. сравниваем каждую строку с шаблоном(регулярка), и, если совпало, то записываем в другой файл. А проблема вся в скорости. Я написал скрипт на перле, но выборка из такого файла занимает более 3-х суток(само регулярное выражение большое), что очень много.

Есть какие нибудь идеи? Вообще, не обязательно делфи, главное что бы это можно было как то ускорить.

Заранее спасибо за ответы.
linap вне форума Ответить с цитированием
Старый 29.09.2013, 05:31   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да там в принципе дело в переборе.
может вам все-таки разбить файл на части и попробовать распараллелить?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.09.2013, 10:32   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
может вам все-таки разбить файл на части и попробовать распараллелить?
Не может, а обязательное условие =) На ПК просто ОЗУ не хватит на это, а если хватит, то будет он до второго пришествия ждать предзагрузки а затем ещё и окончания поиска.
Режьте файл, переделайте его в БД, а из БД делайте выборку. БД по-шустрее будет в плане всего.
Человек_Борща вне форума Ответить с цитированием
Старый 29.09.2013, 11:08   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не обязательно базу создавать. Тот же FileStream совершенно не читает весь файл в ОП. Читать поблочно, отказаться от регулярок, использовать для парсинга Pos, PosEx. 3-ое суток как минимум не будет. И распараллелить не помешает как выше подсказывают
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.09.2013, 14:41   #5
linap
Новичок
Джуниор
 
Регистрация: 30.05.2009
Сообщений: 2
По умолчанию

Всем спасибо за ответы, пойду пробовать.
linap вне форума Ответить с цитированием
Старый 01.10.2013, 06:58   #6
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Хочу уточнить у тех, кто сталкивался с такими конскими объемами данных, если файл данных читать в оперативку блоками скажем по 2Гб и уже там обрабатывать - будет существенно быстрее или не особо?
igh0st вне форума Ответить с цитированием
Старый 01.10.2013, 10:06   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

igh0st, нет, не будет. В систме есть встроеные средства для очень больших файлов. Называется "Файловый маппинг".
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
РазXORивание большого файла Человек_Борща Общие вопросы Delphi 9 21.05.2013 16:47
импорт данных из большого txt файла Неологист Microsoft Office Excel 14 28.09.2011 18:45
Выборка данных из одного файла в другой Kerstone Microsoft Office Excel 1 01.04.2011 02:39
выборка данных из текстового файла uraura Общие вопросы Delphi 3 27.11.2010 16:34
Выборка данных из Excel файла CraZZy RabbIt PHP 5 23.07.2010 03:27