Benchmark-MCE
view release on metacpan or search on metacpan
lib/Benchmark/MCE.pm view on Meta::CPAN
return $avg, $str;
}
sub _min_max_avg {
my $arr = shift;
return (0, 0, 0) unless @$arr;
return min(@$arr), max(@$arr), sum(@$arr)/scalar(@$arr);
}
sub _avg_stdev {
my $arr = shift;
return (0, 0) unless @$arr;
my $sum = sum(@$arr);
my $avg = $sum/scalar(@$arr);
my @sq;
push @sq, ($avg - $_)**2 for (@$arr);
my $dev = _min_max_avg(\@sq);
return $avg, sqrt($dev);
}
# $single = single tail of dist curve outlier, 1 for over (right), -1 for under (left)
sub _drop_outliers {
my $arr = shift;
my $single = shift;
my ($avg, $stdev) = _avg_stdev($arr);
my @newarr;
foreach (@$arr) {
if ($single) {
push @newarr, $_ unless $single*($_ - $avg) > 2*$stdev;
} else {
push @newarr, $_ unless abs($avg - $_) > 2*$stdev;
}
}
return @newarr;
}
sub _pad {
my $str = shift;
my $len = shift || 20;
return $str." "x($len-length($str));
}
sub _printf {
printf @_ unless $QUIET;
}
sub _print {
print @_ unless $QUIET;
}
sub _get_time {
return $MONO_CLOCK
? Time::HiRes::clock_gettime(CLOCK_MONOTONIC)
: Time::HiRes::time();
}
sub _package_ver {
my $pkg = __PACKAGE__;
my $ver = $VERSION;
my $caller = caller(0);
for (my $i = 0; $i < 5; $i++) {
my $caller = caller($i) or last;
if ($caller eq 'Benchmark::DKbench') {
$pkg = $caller;
$ver = eval {$caller->VERSION} || '';
last;
}
}
return "$pkg v$ver";
}
1;
( run in 1.835 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )