my $buf; sub gen_salva2 { while (length $buf < $len) { $buf .= $set[rand @set] for (1..$len*100); $buf =~ s/(.)\1{$max_reps,}/$1 x $max_reps/ge; } substr($buf, -$len, $len, ''); } #### elements: 6 max_reps: 2 Rate salva2 salva almut_mod3 almut_mod4 almut_mod2 almut salva2 1077/s -- -98% -98% -98% -98% -98% salva 54086/s 4922% -- -10% -13% -13% -17% almut_mod3 59766/s 5450% 11% -- -4% -4% -8% almut_mod4 61953/s 5653% 15% 4% -- -1% -5% almut_mod2 62270/s 5682% 15% 4% 1% -- -5% almut 65222/s 5956% 21% 9% 5% 5% -- #### my $buf; sub gen_salva2 { print "$buf\n"; while (length $buf < $len) { $buf .= $set[rand @set] for (1..$len*100); $buf =~ s/(.)\1{$max_reps,}/$1 x $max_reps/ge; } substr($buf, -$len, $len, ''); }