Catalyst::Stats - класс Статистики для измерения времени
__PACKAGE__->stats_class( "My::Stats" );
это если хотите использовать другой класс для статистики.
Чтобы написать свой собственный, вы должны реализовать методы описанные здесь.
Catalyst использует этот класс чтобы информировать о времени выполнения действий компонента. Вы можете добавить точки для анализа в ваш код чтобы получить информацию для более глубокого понимания. Обычно это выглядит так:
sub mysub {
my ($c, ...) = @_;
$c->stats->profile(begin => "mysub");
# code goes here
...
$c->stats->profile("starting critical bit");
# code here too
...
$c->stats->profile("completed first part of critical bit");
# more code
...
$c->stats->profile("completed second part of critical bit");
# more code
...
$c->stats->profile(end => "mysub");
}
Допустим mysub был вызван из действия "process" внутри Catalyst Контроллера по имени "service" затем информирование о времени выполнения, будет выглядеть примерно так:
.----------------------------------------------------------------+-----------.
| Action | Time |
+----------------------------------------------------------------+-----------+
| /service/process | 1.327702s |
| mysub | 0.555555s |
| - starting critical bit | 0.111111s |
| - completed first part of critical bit | 0.333333s |
| - completed second part of critical bit | 0.111000s |
| /end | 0.000160s |
'----------------------------------------------------------------+-----------'
Методы
new
Конструктор
$stats = Catalyst::Stats->new;
enable
$stats->enable(0);
$stats->enable(1);
По умолчанию, включен, после создания объекта.
profile
$stats->profile($comment);
$stats->profile(begin => $block_name, comment =>$comment);
$stats->profile(end => $block_name);
Помечает контрольные точки для анализа. Можно использовать в паре begin/end.
Следующие ключ имя/значение может быть использован, кроме begin, end, comment еще:
uid => UID
Присваивает предопределенный уникальный ID.
parent => UID
для предка UID
created
($seconds, $microseconds) = $stats->created;
Возвращает время создания объекта, в gettimeofday формате.
elapsed
$elapsed = $stats->elapsed
Время жизни с момента создания объекта.
report
print $stats->report ."\n";
$report = $stats->report;
@report = $stats->report;
В скалярном контексте - текстовый отчет. В контексте массива:
[ depth, description, time, rollup ]
depth - уровень вызова в стеке точки анализа.
description - описание, имя и комментарий
time - время жизни
rollup - флаг показывающий, либо срок жизни, либо время жизни начиная с предыдущей точки для анализа.
Совместимые методы
Некоторые методы могут ожидать статистику объекта чтобы быть обычно Tree::Simple объектом.
accept
addChild
setNodeValue
getNodeValue
traverse