use warnings; use strict; use Benchmark qw/cmpthese/; cmpthese(-2, { plain => sub { my @array = 1..50; my @add = 100..150; unshift @array, @add; }, reverse => sub { my @array = 1..50; my @add = 100..150; unshift @array, reverse @add; }, loop => sub { my @array = 1..50; my @add = 100..150; unshift @array, $_ for @add; }, }); __END__ Rate loop reverse plain loop 278364/s -- -31% -32% reverse 400772/s 44% -- -2% plain 407520/s 46% 2% -- #### use warnings; use strict; use Benchmark qw/cmpthese/; use constant TEST => 0; my $EXP = join $", 100..150, 1..50; cmpthese(-2, { unshift => sub { my @array = 1..50; my @add = 100..150; unshift @array, @add; "@array" eq $EXP or die "@array" if TEST; }, loop => sub { my @array = 1..50; my @add = 100..150; unshift @array, $_ for reverse @add; "@array" eq $EXP or die "@array" if TEST; }, concat => sub { my @array = 1..50; my @add = 100..150; @array = ( @add, @array ); "@array" eq $EXP or die "@array" if TEST; }, }); __END__ Rate loop concat unshift loop 273062/s -- -19% -33% concat 337646/s 24% -- -18% unshift 409595/s 50% 21% --