Ответ 1

(Это официальный ответ официального perlfaq, минус любые последующие изменения)

В пространстве имен Devel имеется несколько модулей, которые вы можете использовать для профилируйте свои программы Perl. Модуль Devel:: DProf поставляется с Perl, и вы можете вызвать его с помощью переключателя -d:

$ perl -d:DProf program.pl

После запуска вашей программы в DProf вы получите файл tmon.out с данными профиля. Чтобы просмотреть данные, вы можете превратить их в читаемый человеком отчет с помощью программы dprofpp, которая поставляется с Devel::DProf:

$ dprofpp

Вы также можете выполнить профилирование и отчетность за один шаг с помощью -p переключитесь на dprofpp:

$ dprofpp -p program.pl

Devel:: NYTProf (New York Times Profiler) выполняет профилирование как профилей, так и подпрограмм. Он доступен из CPAN, и вы также вызываете он с переключателем -d:

$ perl -d:NYTProf some_perl.pl

Подобно DProf, он создает базу данных профиля, которую вы могут превращаться в отчеты. Команда nytprofhtml превращает данные в отчет HTML, похожий на отчет Devel:: Cover:

$ nytprofhtml

CPAN имеет несколько других профилировщиков, которые вы можете вызывать в одном и том же мода. Вы также можете быть заинтересованы в использовании C измерять и сравнивать фрагменты кода.

Вы можете прочитать больше о профилировании в программировании Perl, глава 20, или мастеринг Perl, глава 5.

perldebguts документы, создающие настраиваемый отладчик, если вам нужно создайте специальный профиль профилировщика. brian d foy описывает процесс в журнале Perl, "Создание отладчика Perl" и "Профилирование на Perl" .

Perl.com имеет две интересные статьи по профилированию: "Профилирование Perl" , Саймон Козенс и " Отладка и Профилирование приложений mod_perl ", Frank Wiles.

Рэндал Л. Шварц пишет о профилировании в " Ускорение своего Perl Программы " для Unix Review и " Профилирование в Template Toolkit via Overriding " для журнала Linux.

Ответ 2

Я переключился на использование Devel::NYTProf, который является наилучшим профилированием для Perl, скомпонованным, первоначально людьми в NYTimes.

Ответ 3

Там очень простой способ найти медленные точки, чтобы вы могли улучшить производительность своей программы - случайную паузу.

В принципе, идея, а не мера, чтобы увидеть, какая часть медленная, вы позволяете ее медлительности выставлять ее вам.

Запустите программу с флагом отладки -d, а во время ее запуска прерывайте ее вручную и отобразите стек вызовов (T). Сделайте это несколько раз, например 5 или 10. Посмотрите на любое утверждение, которое появляется в нескольких стеках, и это не является абсолютно необходимым, потому что время, за которое оно отвечает, составляет примерно процент стеков, которые показывают его.

Это находит не только горячие точки, но и линии, функции которых называются дорогостоящими. Он также работает независимо от того, связана ли программа с I/O или CPU, и не имеет значения, что еще происходит в машине.

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