use warnings; use strict; use Math::Prime::Util qw/randperm/; use List::Util qw/shuffle/; use Benchmark qw/cmpthese/; my $N = 10; my $K = 5; cmpthese(-1, { mpu => sub { my @range = randperm($N, $K); }, shuf => sub { my @range = (shuffle 0 .. $N-1)[0 .. $K - 1]; }, }); __END__ Rate shuf mpu shuf 2496610/s -- -31% mpu 3598054/s 44% --