|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.06.2015, 11:46 | #1 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Торможение файловой системы
Есть скрипт который в цикле построчно обрабатывает текстовый файлы. текущий размер файлов 500-3000 строк. Файлы содержат информацию поступающую с приборов за один день (то есть за год 365 файлов).
В процессе работы выяснилась не приятная особенность, каждый последующий файл отрабатывается медленные чем предыдущий. Причем торможения начинается ориентировочно с 120 файла. Алгоритм работы про чихвостил вдоль и поперек, ошибок не нашел. Решил проверить файловую систему, поставил 15 секундную паузу между обработкой файлов. Торможение прекратилось. Вывод: тормозит файловая система. Вопрос: Как этого избежать? 15 сек. пауза между каждым файлом - не вариант :) Логирование работы скрипта показала такую картину: SqlN=1 Time: 11:01:19.982000 Strok:343 Runtime: .015000 Runtime/Strok=0.0000437317784 SqlN=365 Time: 11:09:33.137000 Strok:1707 Runtime: 4.691000 Runtime/Strok=0.00274809607 Где SqlN, порядковый номер отрабатываемого файла. Видно что торможение составляет 62,8 раза!! Будут ли предложения как решить проблему? PS Пока работаю в Windows 8 64, рабочая станция работает на Windows 7 32, теоретически возможна работа на Windows XP 32.
С уважением, Алексей.
Последний раз редактировалось tae1980; 11.06.2015 в 12:25. |
11.06.2015, 12:00 | #2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
15 сек. пауза на каждые ~100 файлов
Цитата:
Вы уверены что тормозит именно ЧТЕНИЕ файлов, а не ЗАПИСЬ ? Чтение без сброса результатов ведь не тестировалось? Обработанные данные ведь куда-то должны сбрасываться. БД, "сводный" файлик, ???
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 11.06.2015 в 12:04. |
|
11.06.2015, 12:24 | #3 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Исходные файлы открываются ТОЛЬКО на чтение. Причем на короткий период. Одним махом втягиваем весь файл в память, закрываем файл, и разбираем что втянули. Тут подробнее, плз. Один человек посоветовал, чистить буфер, после каждого файла. Думаю как это организовать... Ни разу не делал раньше. Да, кидаем в сводный файл. Запись в него построчно, в конце обработки каждой строки. Закрываем файл после обработки последнего файла на чтение.
С уважением, Алексей.
|
|
11.06.2015, 12:47 | #4 | ||||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Цитата:
Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||||
11.06.2015, 14:39 | #5 | ||
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Пробовал и так и так. Если не освобождать скрипт работает даже чуть быстрее. Массив каждый раз затирается сам по себе.
Пока не нашел способ принудительно очистить буфер. Файла не большие, объем всех файлов 17Мб. Так что де же если все их одновременно загрузить, память забьется не сильно. Цитата:
Цитата:
Пробовал так же паузы от 0.1 до 1 сек в разных местах,с разной кратностью - пока безрезультатно. :((
С уважением, Алексей.
|
||
11.06.2015, 15:43 | #6 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Спасибо, evg_m! Разобрался! Но ты не толкнул на правильную мысль.
Косяк был все таки в алгоритме. В процессе работы создавалась перемеренная в которой через пробел сохранялись ID всех строк передаваемых в результирующий файл. А так как строк боле 400 000, то столько же слов содержит и переменная. Убрал её, и время работы скрипта с 500 сек, упало до 16. Косяк в том, что эта переменная нужна... Попробую сохранять её данные в массив, а в конце в цикле выводить в результирующий файл по символьно.
С уважением, Алексей.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Драйвер файловой системы | nik2009nik | Win Api | 2 | 26.10.2014 09:16 |
Сортировка файловой системы | Vadik4 | Общие вопросы Delphi | 1 | 08.06.2014 17:55 |
Драйвер файловой системы | vedro-compota | Общие вопросы C/C++ | 2 | 26.01.2012 21:50 |
Устройство файловой системы | Alexandr-vi-92 | Операционные системы общие вопросы | 2 | 06.11.2008 08:14 |