![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Aleshka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 10.12.2007 Где: Харьков Репутация: нет Всего: нет |
Добрый день!
Решил для создания скрипта использовать модуль Tie::File, для того чтобы представить файл в виде массива.
Но заметил то что при выполнении данного кода происходит загрузка процессора до 50% и потребления памяти до 20 Мб. При этом хотелось бы отметить что файл занимает всего 4 Мб. А что будет если файл увеличится до 20 Мб??? Я посмотрел можно ограничить размер выделяемой памяти. но как мне увеличить быстродействие выполенения данного скрипта не знаю. |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Так ли нужно для анализа лога загружать в массив весь файл? Обычно в логах далеко отстоящие строки друг с другом не связаны.
|
|||
|
||||
Aleshka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 10.12.2007 Где: Харьков Репутация: нет Всего: нет |
amg вы абсолютон правы, не нужно анализировать весь лог. Но мне интересно было посмотреть на этот модуль как он работает и в его описании указано что в данном случае массив в память не заносится. Но быстродействия уж очень хромает, по крайне мере в моем случае. Это сообщение отредактировал(а) Aleshka - 19.12.2007, 13:07 |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Tie::File, как я понимаю, нужен когда файл в виде массива не помещается в память, и необходим быстрый доступ к произвольным строкам файла. По нынешним временам 20 или даже 200 Мб файл спокойно можно поместить в обыкновенный массив.
|
|||
|
||||
Aleshka |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 10.12.2007 Где: Харьков Репутация: нет Всего: нет |
Да можно поместить в массив и 200 Мб, но это мне кажется будет не лучший вариант решения. Хотя, каждому свое! Но мне как начинающему инетересно рассмотреть и другие варианты решения.
|
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
СУБД
|
|||
|
||||
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
я много-мегабайтные файлы прохожу простым считыванием
open FL "file"; while my $str (<FL>) { просмотр строки } close FL; работает очень быстро, при том что разбор строк бывает очень сложный. При последовательном движении по файлу загонять весь файл в массив не надо, обычно в памяти хранится массив с окончательными данными, да и то если их нельзя сразу же направить на вывод в другой файл. обычно при такой обработке у меня загрузка на cpu 100%, но памяти потребляет немного |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |