/usr/share/perl5/Rex/Profiler.pm is in rex 1.4.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #
# (c) Jan Gehring <jan.gehring@gmail.com>
#
# vim: set ts=2 sw=2 tw=0:
# vim: set expandtab:
package Rex::Profiler;
use strict;
use warnings;
our $VERSION = '1.4.1'; # VERSION
use Time::HiRes qw(gettimeofday tv_interval);
sub new {
my $that = shift;
my $proto = ref($that) || $that;
my $self = {@_};
bless( $self, $proto );
$self->{__data} = {};
return $self;
}
sub start {
my ( $self, $info ) = @_;
push(
@{ $self->{__data}->{$info} },
{
start => [gettimeofday]
}
);
}
sub end {
my ( $self, $info ) = @_;
return unless ( $self->{__data}->{$info}->[-1] );
my $data = $self->{__data}->{$info}->[-1];
$data->{end} = [gettimeofday];
$data->{duration} = tv_interval( $data->{start}, $data->{end} );
$self->{__data}->{$info}->[-1] = $data;
}
sub report {
my ($self) = @_;
for my $info ( keys %{ $self->{__data} } ) {
print "# $info (count: " . scalar( @{ $self->{__data}->{$info} } ) . ")\n";
print " Timings:\n";
my ( $max, $min, $avg, $all );
for my $entry ( @{ $self->{__data}->{$info} } ) {
if ( !$max || $max < $entry->{duration} ) {
$max = $entry->{duration};
}
if ( !$min || $min > $entry->{duration} ) {
$min = $entry->{duration};
}
$all += $entry->{duration};
}
$avg = $all / scalar( @{ $self->{__data}->{$info} } );
print " min: $min / max: $max / avg: $avg / all: $all\n";
print " Overview:\n";
for my $entry ( @{ $self->{__data}->{$info} } ) {
print " " . $entry->{duration} . "\n";
}
print
"--------------------------------------------------------------------------------\n";
}
}
1;
|