Your results can vary greatly depending on your data. Check out this code that gives you a pretty evenly distributed sample.
use Benchmark;
# Get 200 random 4-digit integers
my @array = (grep {/\d{4}/} map { 10000 * (sprintf "%0.4f", rand) } (1
+..400))[1..200];
print "N = " . @array . "\n\n"; # Be sure we have the right sample siz
+e
timethese(0, {
sorty => \&sorty,
space => \&spaceship,
comp => \&comp
});
sub sorty {
sort @array
}
sub comp {
sort {$a cmp $b} @array
}
sub spaceship {
sort {$a <=> $b} @array
}
PRINTS:
N = 200
Benchmark: running comp, sorty, space, each for at least 3 CPU seconds
+...
comp: 3 wallclock secs ( 3.15 usr + 0.01 sys = 3.16 CPU) @ 1064618.
+52/s (n=3368453)
sorty: 3 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 1096416
+.69/s (n=3415338)
space: 3 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 1064940
+.23/s (n=3314094)
Looks like a pretty even race to me!