![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Aleshka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 10.12.2007 Где: Харьков Репутация: нет Всего: нет |
Написал промежуточную часть скрипта для анализа mpd.log, и рещил его запустить для проверки на рабочей машине. Файл (mpd.log) имеет размер 6,5 Мб и 108227 строк и данный скрипт выполнился за 58 секунд, при этом нагрузка на проц 93%. Это долго как Вы считаете??? И на что нужно обращать внимания, чтобы время его выполнения уменьшить. Прикладываю файл, чтобы Вы могли покритиковать и сделать замечание где я поступил неправильно. Спасибо.
Присоединённый файл ( Кол-во скачиваний: 12 )
mpd 3,39 Kb |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Медленно, очень медленно. Мне трудно разобраться в скрипте - он длинный, да и лога нет, над которым скрипт запускается. И профайлер просто так не напустишь на этот скрипт - профайлеру нужно, чтобы тестируемые куски коды были оформлены в виде подпрограмм.
Могу дать рекомендации по синтаксису, что в глаза бросилось: /^($date)/ - в подобных случаях (если шаблон $date не меняется) добавлять опцию o /IPCP|LCP|IFACE/ - вместо подобного используй /IPCP/ || /LCP/ || /IFACE/, причем то что скорее всего попадется, ставь в начало /^.*\"(.*)\"/ - быстрее будет /^[^"]*\"([^"]*)\"/ Но это все мелочи. Как мне кажется, надо выяснять, где алгоритм тормозит. |
|||
|
||||
| Aleshka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 10.12.2007 Где: Харьков Репутация: нет Всего: нет |
Amq, а может подсказать как правильно проводить тестирование данной программы, чтобы определить где тормозит данная программа, а что такое профайлер???
Да проверил, результат не изменился, может на 1 секунду улучшился, но утверждать не буду. Просто уж очень хочется узнать как производить поиск и устраннение ошибок, которые сказываются так существенно на скорость. Я не прошу никого разобратся в программе просто хочу узнать какие существуют методы поиска ошибок. Это сообщение отредактировал(а) Aleshka - 12.2.2008, 15:51 |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Оказывается, есть и не по-процедурный профайлер. Он показывает, сколько времени тратится на выполнение каждой строки кода. http://search.cpan.org/~salva/Devel-FastPr...vel/FastProf.pm (Наверное, все же имеет смысл некоторые куски объединить в одну строку)
|
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Aleshka, для анализа быстродействия можно использовать модуль Test::Timestamp. Мне очень помогает.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 4 Всего: 5 |
мне кажется, много регекспов можно заменить на index
например
|
|||
|
||||
| Aleshka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 10.12.2007 Где: Харьков Репутация: нет Всего: нет |
Ramirez, я что-то не очень понял Ваше предложение по замене на index. Ведь в данном случае происходит поиск подстроки в строке, а мне необходимо обработать всю строку или я чего-то не допонимаю??
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |