use Benchmark qw(cmpthese); my @arr = map {rand} 0..900000; my @output = map {rand} 0..300000;; Benchmark::cmpthese(10,{ tin1 => sub { $output[int($_/3)] += $arr[$_] for 0..@arr-1; }, tin2 => sub { $output[$_] = $arr[3*$_] + $arr[3*$_+1] + $arr[3*$_+2] for 0..@arr/3; }, tin3=> sub { my $b = 0; for (0..@arr /3) { $output[$_] = $arr[$b] + $arr[$b+1] + $arr[$b +2]; $b += 3; } } }); #### $ perl ../../../perlmonks/bench-trip.pl Rate tin1 tin2 tin3 tin1 1.81/s -- -41% -46% tin2 3.08/s 70% -- -9% tin3 3.39/s 87% 10% --