From: David Kamholz Date: Mon, 3 Jul 2006 14:48:11 +0000 (+0000) Subject: further cleanup to stats code X-Git-Tag: 5.7099_04~444 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=dea1884fe89393c08dfddff22e4cd3feeb5ed6a1 further cleanup to stats code --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 5d3bfc7..b3cf87b 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1223,10 +1223,8 @@ sub _stats_start_execute { sub _stats_finish_execute { my ( $c, $info ) = @_; - my ( $start, $node ) = @{ $info }{qw/start node/}; - - my $elapsed = tv_interval $start; - my $value = $node->getNodeValue; + my $elapsed = tv_interval $info->{start}; + my $value = $info->{node}->getNodeValue; $value->{elapsed} = sprintf( '%fs', $elapsed ); } @@ -1409,25 +1407,20 @@ sub handle_request { # Always expect worst case! my $status = -1; eval { - my $stats = ( $class->debug ) ? Tree::Simple->new: q{}; - - my $handler = sub { + if ($class->debug) { + my $start = [gettimeofday]; my $c = $class->prepare(@arguments); - $c->stats($stats); + $c->stats(Tree::Simple->new); $c->dispatch; - return $c->finalize; - }; + $status = $c->finalize; - if ( $class->debug ) { - my $start = [gettimeofday]; - $status = &$handler; my $elapsed = tv_interval $start; $elapsed = sprintf '%f', $elapsed; my $av = sprintf '%.3f', ( $elapsed == 0 ? '??' : ( 1 / $elapsed ) ); my $t = Text::SimpleTable->new( [ 62, 'Action' ], [ 9, 'Time' ] ); - $stats->traverse( + $c->stats->traverse( sub { my $action = shift; my $stat = $action->getNodeValue; @@ -1439,8 +1432,11 @@ sub handle_request { $class->log->info( "Request took ${elapsed}s ($av/s)\n" . $t->draw ); } - else { $status = &$handler } - + else { + my $c = $class->prepare(@arguments); + $c->dispatch; + $status = $c->finalize; + } }; if ( my $error = $@ ) {