use warnings; use sort '_qsort'; use Benchmark qw(timethese); my @x; my $max = 40000; $x[$_] = int rand(2e5) foreach (0..$max); my @w = 1..$max; my @z = reverse 1..$max; sub sort_random { my @v = sort {$a <=> $b} (@x); } sub sort_sorted { my @v = sort {$a <=> $b} (@w); } sub sort_reversed { my @v = sort {$a <=> $b} (@z); } timethese (800, { 'random' => \&sort_random, 'sorted' => \&sort_sorted, 'reverse' => \&sort_reversed, } );