|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.04.2012, 13:52 | #1 | |
Пользователь
Регистрация: 16.10.2009
Сообщений: 90
|
Работа с большими файлами.
Доброго времени суток!
я самоучка, и столкнулся с проблемой организации работы с достаточно крупными текстовыми файлами, размером около 80мгб (этот размер чуть ниже среднего, может достигать и гб) вот в таком виде: Цитата:
класс в котором производится парсинг: PHP код:
PHP код:
в lb1 вношу счетчик строк. запускаю процесс нажатием на кнопку PHP код:
1 691 197 строк время выполнения 8 минут 10 секунд. во время чтения файла программа подвисает вопросы: 1 - в цикле чтения файла у меня стоит отображение количества строк PHP код:
такая же строчка стоит ВНЕ цикла, и она после чтения отображает количество строк - как сделать так, чтобы количество прочтенных строк отображалось во время чтения файла? 2 - как вообще сделать так, чтобы во время чтения файла программа не подвисала? в коде кнопки сначала прописывал так: PHP код:
3 - как уменьшить время чтения файла? ведь этот файл импортирован из программы которая почти в реальном времени работает с таким массивом данных. 4 - правильно ли ВЕСЬ объем информации вносить в массив при условии что для расчетов мне понадобится только часть данных? часть данных находится по времени, если один раз внести в массив только часть данных, то при изменении временных параметров опять прийдется парсить весь файл чтобы получить даные с другого временного отрезка. 5 - правильно ли вообще вносить эти данные в массив? может правильней всего было бы занести в базу данных? если да, то подскажите литературу по работе с БД для полных чайников. желательно с примерами )) заранее благодарю, с уважением. |
|
05.04.2012, 14:23 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
во-первых, Вы в цикл засунули кучу присвоений визуальным компонентам.
Вы думаете, это ускоряет цикл?!!! Гарантирую - с точностью до наоборот! выбрасывайте всё лишнее! во-вторых, чтобы программа в цикле "не подвисала", добавьте обработку системных сообщений. ну, например так: Код:
а то, что программа работает с этим файлом в реальном времени, так она же не читает ЕГО ПОЛНОСТЬЮ и не разбирает КАЖДУЮ строчку. Дописывает строчки в конец файла. - это будет очень быстро даже для Гб файла. в отличии от построчного чтения и разбора. в-чётвёртых, я бы построчное чтение заменил на System.IO.File.ReadAllText(pathFile Lab2); Последний раз редактировалось Serge_Bliznykov; 05.04.2012 в 14:25. |
05.04.2012, 15:54 | #3 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
05.04.2012, 16:08 | #4 | |
Пользователь
Регистрация: 16.10.2009
Сообщений: 90
|
Цитата:
PHP код:
что вы имели в виду - "вылизать" парсинг? не подскажете? |
|
05.04.2012, 17:11 | #5 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Попробуй еще распараллелить. Измени код так:
Код:
Не давай организму поблажки, каждый день тренируй его в шашки..
|
05.04.2012, 17:39 | #6 |
Пользователь
Регистрация: 16.10.2009
Сообщений: 90
|
|
05.04.2012, 17:42 | #7 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Странно, скинь демо проект и файл, профайлером гляну что и как там.
Не давай организму поблажки, каждый день тренируй его в шашки..
|
05.04.2012, 17:46 | #8 |
Пользователь
Регистрация: 16.10.2009
Сообщений: 90
|
|
05.04.2012, 17:53 | #9 |
Пользователь
Регистрация: 16.10.2009
Сообщений: 90
|
вот архив проекта и самого файла.
проект как есть. вочеры закомментированы, работает только чтение файла. |
05.04.2012, 19:00 | #10 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
убери из tickdata кусок с try-catch для даты
оставь только это Код:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с большими числами | tae1980 | Microsoft Office Excel | 3 | 25.12.2010 20:41 |
C++ Работа с большими числами | airwind | Помощь студентам | 4 | 08.12.2010 15:26 |
Работа с большими числами в Дельфи | motorway | Общие вопросы Delphi | 5 | 02.05.2010 02:14 |
Работа с большими числами | SanekIrk | Общие вопросы Delphi | 3 | 11.07.2008 22:11 |
работа с большими числами | sasadabest | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 16.10.2007 10:51 |