Amon2で実行時間を測定する。

自分の環境だと、$c->stash(Amon2で$c->stashを使う。)が使えるようになってるんで、そこにdispatch前の時間を保存して、dispatch後に差を見れば何秒かかったかわかる。

package MyApp::Web;
use parent qw/MyApp Amon2::Web/;

use Time::HiRes qw/gettimeofday tv_interval/;

__PACKAGE__->add_trigger(
    BEFORE_DISPATCH => sub {
        my $c = shift;

        $c->stash->{'start'} = [gettimeofday];
    },
    AFTER_DISPATCH => sub {
        my ( $c, $res ) = @_;

        $c->log->debug( 'total_time:' . tv_interval( $c->stash->{'start'} ) );
    }
);

で、ページにアクセスしてみて他に比べて時間かかってるなーってとこがあったら、NYTProf(Plack::Middleware::Profiler::NYTProfでプロファイリング。)とかで追い込んでいく。