The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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;