#!/usr/bin/perl use strict; use warnings; use Inline::Sub; my @list = 1 .. 100; print time, "\n"; for (1 .. 5_000_000) { my $low = min(\@list); my $high = max(\@list); my $sum = sum(\@list); my $ave = $sum / @list; my $tot = @list; my $sd = sd(\@list); } print time, "\n"; inline sub min { my ($list) = @_; my $min; for (@$list) { $min = $_ if ! defined $min || $_ < $min; } return $min; } inline sub max { my ($list) = @_; my $max; for (@$list) { $max = $_ if ! defined $max || $_ > $max; } return $max; } inline sub sum { my ($list) = @_; my $tot = 0; $tot += $_ for @$list; return $tot; } inline sub sd { my ($list) = @_; my $sum = sum($list); my $ave = $sum / @$list; my $num = 0; $num += (($_ - $ave) ** 2) for @$list; return sqrt($num / @$list); }