package PerlBench::Stats; use strict; use base 'Exporter'; our @EXPORT_OK = qw(calc_stats); sub calc_stats { my($samples, $hash) = @_; $hash ||= {}; my @t = sort {$a <=> $b} @$samples; my $n = @t; return undef unless $n; my $sum = 0; my $sum2 = 0; for (@t) { $sum += $_; $sum2 += $_ * $_; } $hash->{avg} = $sum / $n; $hash->{stddev} = sqrt(($sum2 - ($sum * $sum)/$n) / $n); $hash->{min} = $t[0]; $hash->{med} = ($n % 2) ? $t[$n/2] : (($t[$n/2-1] + $t[$n/2])/2); $hash->{max} = $t[-1]; $hash->{n} = $n; return $hash; } 1;