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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость выполнения скрипта, Об оптимизации программы 
:(
    Опции темы
Aleshka
Дата 12.2.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Написал промежуточную часть скрипта для анализа mpd.log, и рещил его запустить для проверки  на рабочей машине. Файл (mpd.log) имеет размер 6,5 Мб и 108227 строк и данный скрипт выполнился за 58 секунд, при этом нагрузка на проц 93%. Это долго как Вы считаете??? И на что нужно обращать внимания, чтобы время его выполнения уменьшить.  Прикладываю файл, чтобы Вы могли покритиковать и сделать замечание где я поступил неправильно. Спасибо.   

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  mpd 3,39 Kb
PM MAIL ICQ   Вверх
amg
Дата 12.2.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Медленно, очень медленно. Мне трудно разобраться в скрипте - он длинный, да и лога нет, над которым скрипт запускается. И профайлер просто так не напустишь на этот скрипт - профайлеру нужно, чтобы тестируемые куски коды были оформлены в виде подпрограмм. 

Могу дать рекомендации по синтаксису, что в глаза бросилось:
 /^($date)/ - в подобных случаях (если шаблон $date не меняется) добавлять опцию o
/IPCP|LCP|IFACE/ - вместо подобного используй /IPCP/ || /LCP/ || /IFACE/, причем то что скорее всего попадется, ставь в начало
/^.*\"(.*)\"/ - быстрее будет /^[^"]*\"([^"]*)\"/

Но это все мелочи. Как мне кажется, надо выяснять, где алгоритм тормозит.
PM MAIL   Вверх
Aleshka
Дата 12.2.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Amq,  а может подсказать как правильно проводить тестирование данной программы, чтобы определить где тормозит данная программа, а что такое профайлер???  
Да проверил, результат не изменился, может на 1 секунду улучшился, но утверждать не буду. 
Просто уж очень хочется узнать как производить поиск и устраннение ошибок, которые сказываются так существенно на скорость. Я не прошу никого разобратся в программе просто хочу узнать какие существуют методы поиска ошибок.  

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


Эксперт
***


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

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



Оказывается, есть и не по-процедурный профайлер. Он показывает, сколько времени тратится на выполнение каждой строки кода. http://search.cpan.org/~salva/Devel-FastPr...vel/FastProf.pm (Наверное, все же имеет смысл некоторые куски объединить в одну строку)
PM MAIL   Вверх
ginnie
Дата 12.2.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Aleshka, для анализа быстродействия можно использовать модуль Test::Timestamp. Мне очень помогает.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Ramirez
Дата 20.2.2008, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

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



мне кажется, много регекспов можно заменить на index
например
Код

$temp_line =~ /PPTP connection from/
index($temp_line,'PPTP connection from')

PM ICQ   Вверх
Aleshka
Дата 21.2.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ramirez, я что-то не очень понял Ваше предложение по замене на index. Ведь в данном случае происходит поиск подстроки в строке, а мне необходимо обработать всю строку или я чего-то не допонимаю??
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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