in reply to Can you write a faster code to perform this task?
Benchmarked a few solutions:
use Benchmark qw(:all); my $str = 'iiiiiiiiMMMMMMMMMMMooooooooooooMMMMMMMMMMiiiiiMMMMMMMMoooo' +; my $these = { 'count' => sub { my $count = 0; $count++ while $str =~ /(M+)/g; $count; }, 'regex' => sub { my $count = () = $str =~ /(M+)/g; }, 'split' => sub { $#{[split /M+/, $str, -1]}; }, }; printf "%-10s %d\n", $_, $these->{$_}->() for sort keys %$these; print "\n"; cmpthese(-1, $these);
Got these:
count 3 regex 3 split 3 Rate split regex count split 335814/s -- -3% -30% regex 345739/s 3% -- -27% count 476625/s 42% 38% --
|
|---|