use List::Util 'shuffle'; use Time::HiRes qw(gettimeofday tv_interval); my $N = 500_000; my $t1 = [gettimeofday]; my @a = (1 .. $N); prof("array created"); my @b = shuffle @a; prof("array shuffled"); my @c = sort {$a <=> $b} @b; prof("array sorted"); sub prof{ my $name = shift; my $t2 = [gettimeofday]; my $delta = tv_interval($t1, $t2); print "$delta\t$name\n"; $t1 = $t2; }