use strict;
use warnings;
use Benchmark qw( cmpthese );
my @list = map { '' . int(rand(100)) } 1..1000;
sub map_test {
my %counts = ();
map { ++$counts{$_} } @list;
1;
}
sub foreach_test {
my %counts = ();
++$counts{$_} for @list;
1;
}
cmpthese(-3, {
map => \&map_test,
foreach => \&foreach_test,
});
####
This is perl, v5.6.1 built for MSWin32-x86-multi-thread
Rate map foreach
map 953/s -- -25%
foreach 1278/s 34% --
##
##
This is perl, v5.8.0 built for MSWin32-x86-multi-thread
Rate map foreach
map 1705/s -- -25%
foreach 2288/s 34% --
##
##
This is perl, v5.8.0 built for i386-freebsd
Rate map foreach
map 847/s -- -29%
foreach 1190/s 40% --