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);