Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tie::File, Большая нагрузка на сервер 
:(
    Опции темы
Aleshka
Дата 19.12.2007, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.12.2007
Где: Харьков

Репутация: нет
Всего: нет



Добрый день!
Решил для создания скрипта использовать модуль Tie::File, для того чтобы представить файл в виде массива. 
Код

use Tie::File;

my $file = "/home/alter/script/mpd.log";
tie @lines, 'Tie::File', $file or die "Can't open the $file";
foreach $line (@lines) {
print "$line\n";
}

Но заметил то что при выполнении данного кода происходит загрузка процессора до 50% и потребления памяти до 20 Мб. При этом хотелось бы отметить что файл занимает всего 4 Мб. А что будет если файл увеличится до 20 Мб??? Я посмотрел можно ограничить размер выделяемой памяти. но как мне увеличить быстродействие выполенения данного скрипта не знаю. 
PM MAIL ICQ   Вверх
amg
Дата 19.12.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Так ли нужно для анализа лога загружать в массив весь файл? Обычно в логах далеко отстоящие строки друг с другом не связаны.
PM MAIL   Вверх
Aleshka
Дата 19.12.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.12.2007
Где: Харьков

Репутация: нет
Всего: нет



Цитата

Так ли нужно для анализа лога загружать в массив весь файл? 

amg вы абсолютон правы, не нужно анализировать весь лог. Но мне интересно было посмотреть на этот модуль как он работает  и в его описании указано что в данном случае массив в память не заносится.   Но быстродействия уж очень хромает, по крайне мере в моем случае.

Это сообщение отредактировал(а) Aleshka - 19.12.2007, 13:07
PM MAIL ICQ   Вверх
amg
Дата 19.12.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Tie::File, как я понимаю, нужен когда файл в виде массива не помещается в память, и необходим быстрый доступ к произвольным строкам файла. По нынешним временам 20 или даже 200 Мб файл спокойно можно поместить в обыкновенный массив.
PM MAIL   Вверх
Aleshka
Дата 21.12.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.12.2007
Где: Харьков

Репутация: нет
Всего: нет



Да можно поместить в массив и 200 Мб, но это мне кажется будет не лучший вариант решения. Хотя, каждому свое! Но мне как начинающему инетересно рассмотреть и другие варианты решения. 
PM MAIL ICQ   Вверх
tishaishii
Дата 19.1.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



СУБД
PM MAIL ICQ Skype   Вверх
vadiml
Дата 20.1.2008, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



я много-мегабайтные файлы прохожу простым считыванием
open FL "file";
while my $str (<FL>) {
просмотр строки
}
close FL;
работает очень быстро, при том что разбор строк бывает очень сложный.
При последовательном движении по файлу загонять весь файл в массив не надо, обычно в памяти хранится массив с окончательными данными, да и то если их нельзя сразу же направить на вывод в другой файл.
обычно при такой обработке у меня загрузка на cpu 100%, но памяти потребляет немного
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0866 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.