### Comment on

 Need Help??
As long as we're (micro)optimizing, why even take references to the elements of @_ at all? Just shuffle indices of @_ and grab things out of @_ as they are needed. I guess indexing an array is a tiny bit faster than following a scalar ref.
```sub blokhead (@) {
my @a = (0 .. \$#_);
my \$i = @_;
my \$n;
map+( \$n=rand(\$i--), \$_[\$a[\$n]], \$a[\$n]=\$a[\$i] )[ 1 ], @_;
}
It's clearly not a significant improvement, but does seem to be consistently a tiny bit faster...

On large data:

```our @data = map { 'x' x 1000 } 1..1000;
cmpthese -2, { map { \$_ => "\$_ \@data" } qw/naive listutil buk ikegami

Rate    naive  ikegami listutil      buk blokhead
naive    76.1/s       --     -26%     -47%     -88%     -88%
ikegami   103/s      36%       --     -28%     -84%     -84%
listutil  143/s      89%      39%       --     -78%     -78%
buk       638/s     739%     518%     345%       --      -1%
blokhead  643/s     745%     522%     348%       1%       --
On small data:
```our @data = ("xxx") x 1000;
cmpthese -2, { map { \$_ => "\$_ \@data" } qw/naive listutil buk ikegami

Rate    naive listutil  ikegami      buk blokhead
naive    328/s       --     -26%     -44%     -49%     -49%
listutil 445/s      36%       --     -24%     -30%     -31%
ikegami  589/s      80%      32%       --      -8%      -9%
buk      637/s      94%      43%       8%       --      -1%
blokhead 646/s      97%      45%      10%       1%       --

In reply to Re^2: About List::Util's pure Perl shuffle() by blokhead
in thread About List::Util's pure Perl shuffle() by blazar

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

• Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
• Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
• Read Where should I post X? if you're not absolutely sure you're posting in the right place.
• Please read these before you post! —
• Posts may use any of the Perl Monks Approved HTML tags:
a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
• You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
 For: Use: & & < < > > [ [ ] ]
• Link using PerlMonks shortcuts! What shortcuts can I use for linking?
• See Writeup Formatting Tips and other pages linked from there for more info.

Create A New User
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2017-12-14 06:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
What programming language do you hate the most?

Results (384 votes). Check out past polls.

Notices?