use experimental 'signatures';
sub map_die ($ar) {
eval {map {die} @$ar};
}
sub for_die ($ar) {
eval {
for (@$ar) {
die;
}
}
}
####
use Benchmark 'cmpthese';
my @arr = ((0) x 1e6);
cmpthese(0, {
map => sub {map_die(\@arr)},
for => sub {for_die(\@arr)},
});
__DATA__
Rate map for
map 1257/s -- -100%
for 1664823/s 132352% --
##
##
use List::Gen 'array';
sub gen_die ($ar) {
eval {
&array($ar)->map(sub {die});
}
}
cmpthese(0, {
map => sub {map_die(\@arr)},
for => sub {for_die(\@arr)},
gen => sub {gen_die(\@arr)},
});
__DATA__
Rate map gen for
map 1316/s -- -93% -100%
gen 18831/s 1330% -- -99%
for 1662271/s 126174% 8727% --