Как я могу сделать измерения производительности Perl CGI, тесты производительности, измерения времени на разных этапах выполнения? - PullRequest
2 голосов
/ 09 декабря 2010

Я хотел бы знать методы (кодирование, библиотеки, конфигурации) для измерения продолжительности выполнения кода Perl CGI на различных этапах:

  1. запуск интерпретатора Perl
  2. начало выполнения кода Perl
  3. загрузка в локальные модули Perl .pm для подпрограмм
  4. завершение выполнения кода

Меня особенно интересуют 3 и 4, яне верьте, что я могу многое сделать в отношении 1) или 2), поскольку я не хочу пытаться оптимизировать интерпретатор Perl, единственное, что я могу здесь сделать, - это обновить оборудование до более быстрого компьютера и / или использовать mod_perlвместо классического CGI.

С 3) загрузкой локальных модулей Perl, я хотел бы измерить, сколько времени это займет, но я не уверен, как кодировать это, поскольку я не знаю (или не уверен)как получить код для выполнения перед загрузкой этих модулей.Если бы я знал, то я бы записал время до их загрузки, затем записал бы время после их загрузки и вычислил разницу.

4) было бы проще всего получить, поскольку я записал бы время (впеременная) в начале выполнения, а затем в конце.

Я выполнил поиск на stackoverflow.com и обнаружил:

Результаты поиска Google включены:

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010

Вы можете уменьшить 1) с FastCGI.Это также сократит стадии 2) и 3).

Для измерения 3) вы можете использовать блоки BEGIN.Пример:

use Benchmark ':hireswallclock';
my ($t0,$t1);
BEGIN {$t0 = Benchmark->new;}
use DBIx::Class;
BEGIN {$t1 = Benchmark->new;}
print "the loading took:",timestr(timediff($t1, $t0)),"\n";

Deve :: NYTProf поможет вам с 4).Также есть специальные модули, такие как Template :: Timer, CGI :: Application :: Plugin :: DevPopup :: Timing, DBIx :: Class :: Storage :: Statistics.

2 голосов
/ 09 декабря 2010

В дополнение к FastCGI есть также mod_perl и, что более важно, PSGI .С PSGI вы можете отделить свое приложение от конкретного серверного сервера.

...