#!/usr/bin/perl use strict; use warnings; use Benchmark qw(cmpthese); our @foo = 1 .. 10; sub a { my @list = @{shift()}; $_ += 1 foreach @list; return \@list; } sub b { my @list = @{shift()}; return [map {$_ += 1} @list]; } cmpthese(500_000, { a => sub {a(\@foo)}, b => sub {b(\@foo)}, c => 'my @list = @foo; $_ += 1 foreach @list; \@list', d => 'my @list = @foo; [map {$_ += 1} @list]', }); __END__ Rate b d a c b 68587/s -- -9% -39% -52% d 74963/s 9% -- -33% -48% a 111607/s 63% 49% -- -22% c 143678/s 109% 92% 29% --