DB<4> sub Shuffle{my $ar=shift; my $i=@$ar; while($i--){my $n=int rand(1+$i); @$ar[$i,$n]=@$ar[$n,$i]}} DB<5> @a = ( 0..9999 ) DB<6> timethese( 1000, { FY => 'Shuffle(\@a)', SR => '@a=sort{(-1,1)[rand 2]}@a' }) Benchmark: timing 1000 iterations of FY, SR... FY: 63 wallclock secs (61.93 usr + 0.00 sys = 61.93 CPU) @ 16.15/s (n=1 000) SR: 157 wallclock secs (155.34 usr + 0.00 sys = 155.34 CPU) @ 6.44/s ( n=1000)