#!/usr/bin/env perl use strict; use warnings; use Benchmark 'cmpthese'; my @source; for my $arrsize (1e6, 1e7, 1e8) { print "Source array has $arrsize elements\n"; my @source; push @source, rand for 1..$arrsize; cmpthese (1e8, { 'BUK' => ' my @b; $b[ $_-1 ] = $a[ $_-1 ] - $a[ $_ ] for 1 .. $#a; ', 'ike1' => ' my @b; $b[ $_ ] = $a[ $_ ] - $a[ $_+1 ] for 0 .. $#a-1; ', 'ike2' => ' my @b = @a; $b[ $_ ] -= $b[ $_+1 ] for 0 .. $#b-1; pop @b; ' }); print '-' x 80 . "\n"; }