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 --- lib/Reply/Plugin/Timer.pm | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/Reply/Plugin/Timer.pm (limited to 'lib') 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