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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2014, 17:04   #1
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию Обработка множества данных из текстового файла

Здравствуйте, уважаемые форумчане!
Поставлена следующая задача.
Имеется несколько текстовых файлов (4 и более), в каждом файле примерно 2600000 строк результатов, строки записаны в следующем формате:

i f i r r r r r x=i y=i z=i t=r

где i, r - какие-то числа (i - целое, r- вещественное); f - значение функции (вещественное число), зависящей от параметров; x,y,z,t - параметры, а после знака равно их значение.
Требуется переписать в другой файл, те строки, у которых параметры совпадают во всех файлах, а значение функции находится в заданных пределах.
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 08.10.2014, 17:10   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Проблема заключается в том, что, если сравнивать параметры из одного файла с остальными и при этом имеется условие на окончание просмотра оставшейся части файла, при нахождении схожих параметров, то процесс (работа программы) затягивается на весьма продолжительное время, примерно, 2 месяца на сравнение 2 файлов. Программа написана на PascalABC.NET.
Посоветуйте, пожалуйста, более оптимальный алгоритм с наименьшим временем исполнения.
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 08.10.2014, 17:50   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Отсортировать содержимое файлов по некоторым критериям (например, следованию подряд значений параметров). Тогда рассмотрение строк можно осуществлять на небольшом участке (одинаковые параметры будут расположены рядом), а не скакать по всему файлу.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.10.2014, 20:00   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

ну вот, хоть что-то интересое попалось среди тонн шлака.
аффтар, вывали исходные файлы, буду посмотреть.

Цитата:
Отсортировать содержимое файлов по некоторым критериям
для начала я бы пропарсил файлы и перевёл строки в цифрУ. вот после этого можно отсортировать. видать, исходники - это логи какой-то софтины.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 08.10.2014 в 20:05.
min@y™ вне форума Ответить с цитированием
Старый 08.10.2014, 20:29   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
2 месяца на сравнение 2 файлов
Полный абзац. Я бы в нормальную СУБД бросил данные. Пару с половиной лимонов записей в каждом файле не так уж и много. А дальше игрался бы запросами и минимум программирования, вернее совсем без него
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.10.2014, 20:34   #6
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Цитата:
Посоветуйте, пожалуйста, более оптимальный алгоритм.
А менее оптимальный лицезреть можно, или это тайна?
indexx вне форума Ответить с цитированием
Старый 08.10.2014, 20:38   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
А менее оптимальный лицезреть можно, или это тайна?
Чтение StringList'ом. Не иначе

Файловый маппинг сильно ускорит обработку данных максимум до нескольких часов. Логи апача и поболее весят, и все равно читабельны, за пару сек открывает лог на 12 Гб.
Человек_Борща вне форума Ответить с цитированием
Старый 08.10.2014, 20:42   #8
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Человек_Борща А если побить файлы на отдельные вычислительные потоки?
indexx вне форума Ответить с цитированием
Старый 08.10.2014, 20:49   #9
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Спасибо всем за проявленный интерес, за ответы и предложения!
Решение компромиссное для себя пока нашел. Считываю значение функции в 3-х мерный массив с индексами x,y,z, благо это целые числа и не слишком большие (менее 1000). Оказалось, что четвертый параметр не важен.

indexx, побить на потоки - хорошая идея.
Есть вопросы, пишите в ЛС.

Последний раз редактировалось rubius2008; 08.10.2014 в 20:57.
rubius2008 вне форума Ответить с цитированием
Старый 08.10.2014, 20:55   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Человек_Борща А если побить файлы на отдельные вычислительные потоки?
Мне кажется это очевидным. Использовать потоки. Иначе и маппинг не поможет.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Считывание и обработка данных из текстового файла Craz Помощь студентам 3 25.07.2013 22:50
Считывание и обработка данных из текстового файла Craz Помощь студентам 2 14.07.2013 19:56
Обработка текстового файла Dimabara Помощь студентам 0 19.11.2012 15:09
Обработка текстового файла MrGreen Помощь студентам 0 07.05.2012 13:18
Обработка текстового файла MMMMMMM Помощь студентам 0 11.12.2010 17:00