use strict; use warnings; use Benchmark (); use List::Util (); sub mrborisguy { my @shuffled = map { $_->[1] } sort { $a->[0] <=> $b->[0] } map { [rand(),$_] } @{$_[0]}; } sub ikegami { my @shuffled = List::Util::shuffle(@{$_[0]}); } { my @data = map { [] } 1..$ARGV[0]; Benchmark::cmpthese(-3, { mrborisguy => sub { mrborisguy \@data }, ikegami => sub { ikegami \@data }, }); }