From 3f90aea66675b0bc2224d16992390a6bb69accd4 Mon Sep 17 00:00:00 2001 From: Arthur Axel 'fREW' Schmidt Date: Thu, 6 Jun 2013 18:27:43 -0500 Subject: add Timer plugin --- Changes | 1 + lib/Reply/Plugin/Timer.pm | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 lib/Reply/Plugin/Timer.pm diff --git a/Changes b/Changes index b037f86..22ffcd3 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ Revision history for Reply {{$NEXT}} + - add Timer plugin (Arthur Axel fREW Schmidt) 0.05 2013-06-04 - avoid test failures from DataPrinter, since it's optional diff --git a/lib/Reply/Plugin/Timer.pm b/lib/Reply/Plugin/Timer.pm new file mode 100644 index 0000000..a3ec247 --- /dev/null +++ b/lib/Reply/Plugin/Timer.pm @@ -0,0 +1,52 @@ +package Reply::Plugin::Timer; +use strict; +use warnings; +# ABSTRACT: time commands + +use base 'Reply::Plugin'; + +use Time::HiRes qw(gettimeofday tv_interval); + +=head1 SYNOPSIS + + ; .replyrc + [Timer] + mintime = 0.01 + +=head1 DESCRIPTION + +This plugin prints timer info for results that take longer than C. +the default C is C<< 0.01 >> seconds. + +=cut + +sub new { + my $class = shift; + my %opts = @_; + + my $self = $class->SUPER::new(@_); + $self->{mintime} = $opts{mintime} || 0.01; + + return $self; +} + + +sub execute { + my ($self, $next, @args) = @_; + + my $t0 = [gettimeofday]; + my $ret = $next->(@args); + my $elapsed = tv_interval($t0); + + if ($elapsed > $self->{mintime}) { + if ($elapsed >= 1) { + printf "Execution Time: %0.3fs\n", $elapsed + } else { + printf "Execution Time: %dms\n", $elapsed * 1000 + } + } + + return $ret; +} + +1; -- cgit v1.2.3-54-g00ecf