#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark 'cmpthese';
my @x = 0 .. 99;
cmpthese 1e6 => {
map_expr => sub { my @y = @x; map ++$_, @y; return },
map_block => sub { my @y = @x; map { ++$_ } @y; return },
for => sub { my @y = @x; ++$_ for @y; return },
};
####
Rate map_block map_expr for
map_block 75019/s -- -44% -47%
map_expr 134953/s 80% -- -5%
for 141844/s 89% 5% --
####
$ perl -v | head -2 | tail -1
This is perl 5, version 26, subversion 0 (v5.26.0) built for darwin-thread-multi-2level