Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: A bad shuffle

by Anonymous Monk
on Mar 21, 2005 at 10:04 UTC ( #441161=note: print w/replies, xml ) Need Help??


in reply to Re: A bad shuffle
in thread A bad shuffle

Considering that shuffle and random_perm are called without arguments, and are hence shuffling empty lists, your benchmark doesn't show anything interesting. If you change the @_ in both subs to @cards, I get the following results:
              Rate random_perm     shuffle
random_perm 6796/s          --        -32%
shuffle     9955/s         46%          --
It may appear that shuffle is faster. But look what happens when we shuffle 52000 cards instead of 52:
            s/iter     shuffle random_perm
shuffle       1.02          --        -85%
random_perm  0.158        550%          --
It's well known that a shuffle based on splice doesn't scale, due to its quadratic behaviour.

Never use a splice based shuffle. For every millisecond you will gain if you shuffle a small list you'll pay a second when shuffling a large list.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://441161]
help
Chatterbox?
[thepkd]: some guy was suggesting $aohoaoh[0]->{'foo '}[0]->{}. This wouldnt work.
[GotToBTru]: you're mixing notation there I think
[GotToBTru]: $aohoaoh->[0] is a hash reference, so $aohoaoh->[0]->{ key1} would work
[1nickt]: If 1nickt is the some guy, that's not what he said.
[GotToBTru]: thepkd might not know about last hour of cb
[1nickt]: my $x = $aohoaoh->[0]->{' foo'}->[0]->{'bar' }; should work
[thepkd]: its not $aohoaoh->[0]. its $aohoaoh[0]->{'foo '}. Tried it. Its working. Thnaks

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (12)
As of 2016-12-06 13:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (105 votes). Check out past polls.