Rate list ref list_nc list 132332/s -- -52% -56% ref 273067/s 106% -- -9% list_nc 300755/s 127% 10% -- #### Rate list list_nc ref list 148/s -- -69% -73% list_nc 469/s 218% -- -14% ref 545/s 269% 16% -- #### use strict; use warnings; use Benchmark qw( cmpthese ); sub pass_ref { my ($a) = @_; my $x = ''; $x .= $_ for @$a; 1; } sub pass_list { my @a = @_; my $x = ''; $x .= $_ for @a; 1; } sub pass_list_no_copy { my $x = ''; $x .= $_ for @_; 1; } my %tests = ( ref => 'pass_ref(\@a);', list => 'pass_list(@a);', list_nc => 'pass_list_no_copy(@a);', ); $_ = 'use strict; use warnings; our @a; ' . $_ for values(%tests); our @a = ('-') x ( $ARGV[0] || 10 ); cmpthese(-1, \%tests);