use List::Util qw/sum/;
$header{"Number of Drills"} = sum
map $_->count,
map { values %{ $_->tool } } @drill_arr;
####
timethese(-6, {
'sum' => sub {
my $n = sum
map $_->{count},
map { values %{ $_->{tool} } } @drill_arr;
},
'sub' => sub {
my $n = &{ sub {
my $ret;
foreach my $l ( @drill_arr ) {
foreach ( values %{$l->{tool}} ) {
$ret += $_->{count};
}
}
return $ret;
} };
},
});
####
Benchmark: running sub, sum, each for at least 6 CPU seconds...
sub: 7 wallclock secs ( 6.00 usr + 0.00 sys = 6.00 CPU) @ 15883.17/s (n=95299)
sum: 6 wallclock secs ( 6.02 usr + 0.00 sys = 6.02 CPU) @ 40993.85/s (n=246783)