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,
} );
####
$ perl bench_sort2.pl
Benchmark: timing 800 iterations of random, reverse, sorted...
random: 14 wallclock secs (14.48 usr + 0.00 sys = 14.48 CPU) @ 55.26/s (n=800)
reverse: 14 wallclock secs (13.57 usr + 0.00 sys = 13.57 CPU) @ 58.94/s (n=800)
sorted: 14 wallclock secs (13.57 usr + 0.00 sys = 13.57 CPU) @ 58.94/s (n=800)
####
$ perl bench_sort2.pl
Benchmark: timing 800 iterations of random, reverse, sorted...
random: 11 wallclock secs (11.31 usr + 0.00 sys = 11.31 CPU) @ 70.73/s (n=800)
reverse: 2 wallclock secs ( 1.98 usr + 0.00 sys = 1.98 CPU) @ 403.84/s (n=800)
sorted: 2 wallclock secs ( 1.94 usr + 0.00 sys = 1.94 CPU) @ 413.44/s (n=800)