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.