use strict; use warnings; use Benchmark qw/cmpthese/; my $runs = 1024; my $elts = 1024; sub getsome { return 0 .. $elts-1; } cmpthese( $runs, { 'push $' => sub { my @ray = (); push @ray, $_ for (0 .. $elts-1); }, 'push @' => sub { my @ray = (); push @ray, getsome(); }, 'assign $' => sub { my @ray = (); $ray[$_] = $_ for (0 .. $elts-1); }, 'assign @' => sub { my @ray = getsome(); }, 'p assign $' => sub { my @ray = (); $#ray = $elts + $[ - 1; $ray[$_] = $_ for (0 .. $elts-1); } });