$ perl sortbench.pl Benchmark: timing 1000 iterations of f_alpha, f_owtdi, f_sship, i_alpha, i_owtdi, i_sship... f_alpha: 57 wallclock secs (51.10 usr + 0.02 sys = 51.12 CPU) @ 19.56/s (n=1000) f_owtdi: 92 wallclock secs (83.53 usr + 0.01 sys = 83.54 CPU) @ 11.97/s (n=1000) f_sship: 37 wallclock secs (33.55 usr + 0.00 sys = 33.55 CPU) @ 29.81/s (n=1000) i_alpha: 41 wallclock secs (36.44 usr + 0.01 sys = 36.45 CPU) @ 27.43/s (n=1000) i_owtdi: 91 wallclock secs (82.73 usr + 0.02 sys = 82.75 CPU) @ 12.08/s (n=1000) i_sship: 38 wallclock secs (32.81 usr + 0.00 sys = 32.81 CPU) @ 30.48/s (n=1000) Rate f_owtdi i_owtdi f_alpha i_alpha f_sship i_sship f_owtdi 12.0/s -- -1% -39% -56% -60% -61% i_owtdi 12.1/s 1% -- -38% -56% -59% -60% f_alpha 19.6/s 63% 62% -- -29% -34% -36% i_alpha 27.4/s 129% 127% 40% -- -8% -10% f_sship 29.8/s 149% 147% 52% 9% -- -2% i_sship 30.5/s 155% 152% 56% 11% 2% -- #### #!/usr/bin/perl -w use strict; use Benchmark 'cmpthese'; my $count = 1000; my @nfl = map { int( rand(1000) ) } 1..10000; my @nin = map { int } @nfl; my @ain = map { sprintf "%03d", $_ } @nin; my @afl = map { my $str = sprintf "%3.12d", $_; '0' x (3 - index $str, '.') . $str; } @nfl; my @rin = (int 1) x 10000; my @rfl = (1.01) x 10000; my @sfl = ('z' x 16) x 10000; my @sin = ('z' x 4) x 10000; cmpthese( $count, { f_owtdi => sub { @rfl = sort { $a - $b } @nfl }, i_owtdi => sub { @rin = sort { $a - $b } @nin }, f_sship => sub { @rfl = sort { $a <=> $b } @nfl }, i_sship => sub { @rin = sort { $a <=> $b } @nin }, f_alpha => sub { @sfl = sort @afl }, i_alpha => sub { @sin = sort @ain }, });