Your skill will accomplishwhat the force of many cannot PerlMonks

### Re^3: Predefined Sort

by Fletch (Chancellor)
 on Jun 20, 2008 at 17:34 UTC ( #693191=note: print w/replies, xml ) Need Help??

in reply to Re^2: Predefined Sort

Just as quickly? Looks like (surprisingly, to me at least) ~9-10% faster on average.

```use Benchmark qw( timethese cmpthese );
use List::Util qw( shuffle );

for my \$max (qw( 100 200 500 1000 2000 5000 )) {
print "results for \$max elems\n";

my @big_list = shuffle 1 .. \$max;

cmpthese(
-1,
{   plain_sort => sub {
my @local = sort { \$b <=> \$a } @big_list;
},
reversed => sub {
my @local = reverse sort { \$a <=> \$b } @big_list;
},
}
);

print "\n";
}

exit 0;

__END__
results for 100 elems
Rate plain_sort   reversed
plain_sort 46849/s         --        -8%
reversed   50717/s         8%         --

results for 200 elems
Rate plain_sort   reversed
plain_sort 20676/s         --       -12%
reversed   23424/s        13%         --

results for 500 elems
Rate plain_sort   reversed
plain_sort 7657/s         --        -9%
reversed   8374/s         9%         --

results for 1000 elems
Rate plain_sort   reversed
plain_sort 3490/s         --        -8%
reversed   3794/s         9%         --

results for 2000 elems
Rate plain_sort   reversed
plain_sort 1599/s         --        -9%
reversed   1756/s        10%         --

results for 5000 elems
Rate plain_sort   reversed
plain_sort 553/s         --       -10%
reversed   613/s        11%         --

This space reserved for the update when someone points out my obvious benchmark fau pas . . . :)

The cake is a lie.
The cake is a lie.
The cake is a lie.

Replies are listed 'Best First'.
Re^4: Predefined Sort
by kyle (Abbot) on Jun 20, 2008 at 17:47 UTC

I usually think of the margin of error for Benchmark as about 10%. Any difference smaller than that is likely to be noise. This might also be a case where you move the code from place to place in the file and it changes speed (see No More Meaningless Benchmarks!).

Or maybe it's faster to say {\$a<=>\$b} rather than {\$b<=>\$a} for some reason. If I run your benchmark, changing only reverse sort to sort (so the 'reversed' case actually sorts forward), the results look about the same—{\$a<=>\$b} wins.

In any case, I'll probably keep thinking of them as "the same speed", benchmarks be damned.

Create A New User
Node Status?
node history
Node Type: note [id://693191]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2018-04-19 10:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (72 votes). Check out past polls.

Notices?