Реклама на сайте Advertise with us
Тема: Оптимизация скрипта. Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе bog


Зарегистрирован: 07.11.02
Сообщения: 1996
Ссылка на сообщениеДобавлено: 13/09/04 в 12:30     

Назрел очередной вопрос...

есть скрипт который вместо расчетных 0.5 переодически грузит процессор на 5% и более.
Хотелось бы выяснить какая команда или строчка вызывает большую нагрузку.
Скрипт довольно большой и использует пару вложенных скриптов и баз данных поэтому эксперементировать непосредственно с кодом довольно сложно.
Может есть какой нибудь дебагер или утилиты которые позволят определить что именно грузит процессор ?

K началу

 
Информация о пользователе undef


Зарегистрирован: 15.09.03
Сообщения: 357
Ссылка на сообщениеДобавлено: 13/09/04 в 13:13     

что за скрипт? какая платформа?

если исполняемый файл могу посоветовать truss (unix), strace (linux)
выводит системные вызовы и можно определить место где реурсы особенно сильно используются.

Если скрипт на php/perl можно попытаться в коде навставлять
что-нибудь типа print "Line ..." между сомнительными участками.
и паралельно с выводом этих строк смотреть на загрузку проца.

Посмотри, используется ли активно ОЗУ при пике процессора, это поможет определить узкое место или плохой алгоритм.

Проц может юзаться при активном вводе-выводе, при обработке больших массивов, при сложно сравнение строк...

Что еще посоветовать... ну можно внутри таймеров навставлять, чтобы высчитать время отработки каждого блока программы.

K началу

 
Информация о пользователе bog


Зарегистрирован: 07.11.02
Сообщения: 1996
Ссылка на сообщениеДобавлено: 13/09/04 в 14:28     

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

озу пользуется равномерно. единственные сомнения которые у меня были - это пара циклов... поставил в циклы команду (usleep 800) на нагрузку проца это не повлияло - значит имхо не в них дело.
больше идей не было... а код действительно большой, почти 2000 строк icon_sad.gif

K началу

 
Информация о пользователе undef


Зарегистрирован: 15.09.03
Сообщения: 357
Ссылка на сообщениеДобавлено: 13/09/04 в 15:22     

со скриптами конечно сложнее
проц там отследить сложно... если есть малейшие подозренияна циклы, ищи в них.. можешь сюда выложить куски, подскажу может что..

bog писал:
скрипт на РНР.
работает буквально 2 секунды, так что делать принт и смотреть загруз проца - нереально.
как определять загрузку процессора конкретным скриптом из него самого я не знаю icon_sad.gif...
т.е. теоритически конечно можно запустить скрипт к примеру от нободи с уникальным именем, а потом из скрипта делать переодически системный топ и смотреть на нужную строку... но имхо это ни даст никаких реальных значений так как данные к моменту выполнения этих команд будут уже не актуальны.
озу пользуется равномерно. единственные сомнения которые у меня были - это пара циклов... поставил в циклы команду (usleep 800) на нагрузку проца это не повлияло - значит имхо не в них дело.
больше идей не было... а код действительно большой, почти 2000 строк icon_sad.gif

K началу

 
Информация о пользователе Stek


Зарегистрирован: 24.10.02
Сообщения: 1615
Ссылка на сообщениеДобавлено: 13/09/04 в 17:55     

www.xdebug.org спасет отца русской демократии.
Еще zend studio неплохо помогает.

K началу

 
Информация о пользователе bog


Зарегистрирован: 07.11.02
Сообщения: 1996
Ссылка на сообщениеДобавлено: 13/09/04 в 21:34     

спасибо.
пошел ставить icon_smile.gif

K началу

 
Информация о пользователе ghood


Зарегистрирован: 16.06.04
Сообщения: 183
Ссылка на сообщениеДобавлено: 13/09/04 в 23:22     

Вообще я в своей практике просто разбивал на части и замерял _время выполнения_ каждой части. Та которая дольше всего выполняется и грузит проц болей всего. Почти всегда срабатывало.

K началу

 
Информация о пользователе Dragon


Зарегистрирован: 09.02.03
Сообщения: 270
Ссылка на сообщениеДобавлено: 14/09/04 в 06:24     

ghood писал:
Вообще я в своей практике просто разбивал на части и замерял _время выполнения_ каждой части. Та которая дольше всего выполняется и грузит проц болей всего. Почти всегда срабатывало.


Опередил. icon_smile.gif

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

P.S. Либо работа с диском, либо с БД. Скорее всего.

K началу

 
Информация о пользователе begemot


Зарегистрирован: 25.12.03
Сообщения: 172
Ссылка на сообщениеДобавлено: 14/09/04 в 22:34     

проц тормозят: глупые циклы, неоптимальные аглоритмы работы с большими списками
диск тормозят: операции open (php:include без оптимайзера), и собственно все операции работы с диском

K началу

 
Информация о пользователе Dr.Syshalt


Зарегистрирован: 14.05.04
Сообщения: 145
Ссылка на сообщениеДобавлено: 14/09/04 в 22:39     

bog:

Попробуй вот это.

http://sourceforge.net/projects/php-profiler/

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »