#/usr/bin/perl use warnings; use strict; use Benchmark qw(cmpthese); my @arr = (0,3,4,5,8,10,12,15, 1..999999); cmpthese (-2, { mapgrep => sub {map {$arr[$_]} grep {$_ & 1} 1..$#arr}, slice => sub {@arr[ grep {$_ & 1} 1..$#arr ];}, mult => sub {@arr[map {$_*2+1} 0..int(@arr/2)-1];}, grep => sub {my $ind = 0; grep {$ind++ % 2} @arr}, push => sub {my @var; push(@var, $arr[$_*2+1]) for 0..int(@arr/2)-1}, map => sub {map { $arr[$_*2+1] } 0..int(@arr/2)-1}, } );