Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Choosing the right sort (Or: WUDsamatter?)

by tlm (Prior)
on Apr 14, 2005 at 04:36 UTC ( #447643=note: print w/replies, xml ) Need Help??

in reply to Choosing the right sort (Or: WUDsamatter?)

Following up on a sharp observation of tye's in CB, I decided to check whether some of your sorts were in fact no-ops. Here's what I benchmarked, and the results:

srand 0; my @fixture = map 'foo' . int( rand 1000 ). '.tla', 1..5000; use Benchmark 'cmpthese'; cmpthese( -1, { naive => sub { ( naive( @fixture ) )[ 0 ] }, orcish => sub { ( orcish( @fixture ) )[ 0 ] }, schwartzian => sub { ( schwartzian( @fixture ) )[ 0 ] }, guttros => sub { ( guttros( @fixture ) )[ 0 ] }, } ); __END__ Rate naive orcish schwartzian guttros naive 3.05/s -- -65% -76% -87% orcish 8.74/s 186% -- -31% -61% schwartzian 12.7/s 317% 46% -- -44% guttros 22.6/s 642% 159% 78% --
Note that the subs that are benchmarked return the first element of the sorted array.

the lowliest monk

Replies are listed 'Best First'.
Re^2: Choosing the right sort (Or: WUDsamatter?)
by ikegami (Pope) on Apr 14, 2005 at 04:58 UTC

    Just to clarify Pustular Postulant, the OP must have called the functions in a void or scalar context. sort is optimized to do nothing in that situation, so the functions naive and orcish return instantly. Read more for confirmation of Pustular Postulant's results and confirmation that running the sorts in scalar context give results similar to those of the OP.

    That's why it's important to show one's work :)

      Yes, that's what gave me the idea of asking for the first element of sorted array, though in hindsight there are definitely clearer, more direct ways to force a list context than the one I chose.

      the lowliest monk

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://447643]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2018-06-20 10:33 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (116 votes). Check out past polls.