@sorted = sort { $a <=> $b } @list;
####
#!/usr/bin/perl -w
use strict;
use Benchmark;
my(@sorted, @unsorted);
push @unsorted, rand 10000 for 1 .. 1000;
timethese(-3, {
native => sub { @sorted = sort @unsorted },
string => sub { @sorted = sort { $a cmp $b } @unsorted },
reversed_string => sub { @sorted = sort { $b cmp $a } @unsorted },
numerical => sub { @sorted = sort { $a <=> $b } @unsorted },
reversed_numerical => sub { @sorted = sort { $b <=> $a } @unsorted },
messed_up=> sub { @sorted = sort { my $cmp = $a <=> $b; $cmp } @unsorted },
});
##
##
Benchmark: running messed_up, native, numerical, reversed_numerical, reversed_string, string, each for at least 3 CPU seconds...
messed_up: 3 wallclock secs ( 3.29 usr + 0.00 sys = 3.29 CPU) @ 75.99/s (n=250)
native: 3 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 240.89/s (n=754)
numerical: 3 wallclock secs ( 3.18 usr + 0.00 sys = 3.18 CPU) @ 375.16/s (n=1193)
reversed_numerical: 2 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 379.87/s (n=1189)
reversed_string: 4 wallclock secs ( 3.62 usr + 0.00 sys = 3.62 CPU) @ 239.78/s (n=868)
string: 3 wallclock secs ( 3.24 usr + 0.00 sys = 3.24 CPU) @ 226.54/s (n=734)