Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: Array Shuffle

by ikegami (Patriarch)
on Jun 11, 2007 at 14:43 UTC ( [id://620503]=note: print w/replies, xml ) Need Help??


in reply to Re: Array Shuffle
in thread Array Shuffle

Isn't List::Util's shuffle implemented in C/XS? I'd be more interested in seeing a comparion where both algorithms were implemented in C/XS (or where both algorithms were implemented in Perl).

Replies are listed 'Best First'.
Re^3: Array Shuffle
by Limbic~Region (Chancellor) on Jun 11, 2007 at 16:43 UTC
    ikegami,
    Well, yes. It falls back to a pure perl version if the XS version isn't available. This is unlikely to happen since List::Util is part of the core but there is nothing preventing you from using the pure perl version as part of the benchmark.

    Cheers - L~R

Re^3: Array Shuffle
by GrandFather (Saint) on Jun 11, 2007 at 19:11 UTC

    I understand your intellectual curiosity wrt the algorithm, but my post was more a subtle hint that using a pre-packaged wheel is often a better way of spending time than polishing your own variant. Seems from OP's reply I picked the right answer.

    From the benchmark results I guessed XS was likely lurking in the background somewhere, but in this case that can be treated as a reasonable optimisation by the module author. There is no hint in the List::Util docs that indicate the implementation method, however the guts of the routine seems to be:

    for (index = items ; index > 1 ; ) { int swap = (int)(Drand01() * (double)(index--)); SV *tmp = ST(swap); ST(swap) = ST(index); ST(index) = tmp; } XSRETURN(items);

    DWIM is Perl's answer to Gödel

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://620503]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (6)
As of 2024-04-20 02:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found