use Time::HiRes qw(time); my @results = (); push @results, [TimeIt()] for 1 .. 10; shift @results; # First result is polluted by startup processing @results = sort {$a->[0] <=> $b->[0]} @results; printf "Out: %.5f In: %.5f diff: %+.6f\n", @$_, $_->[1] - $_->[0] for @results; printf "Out delta %f\n", $results[-1][0] - $results[0][0]; @results = sort {$a->[1] <=> $b->[1]} @results; printf "In delta %f\n", $results[-1][1] - $results[0][1]; sub TimeIt { my ($i); my $start = time; { my $x; for $i (1..1e6) { $x = 1; } } my $end = time; my $deltaOut = $end - $start; $start = time; for $i (1..1e6) { my $x = 1; } $end = time; my $deltaIn = $end - $start; return $deltaOut, $deltaIn; }