Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

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]
[SuicideJunkie]: email tests, eh? I've gotten dinged for "you can't block this sender as spam, they're internal"
[Corion]: Heh - somebody in our marketing departement thought it was a great idea to use the alerting tool for company-wide outages to announce some new feature ;)

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (12)
As of 2017-05-24 14:40 GMT
Find Nodes?
    Voting Booth?