Benchmark: running BigRE, Index, OptRE, m// loop, each for at least 10 CPU seconds...
BigRE: 11 wallclock secs (10.56 usr + 0.00 sys = 10.56 CPU) @ 11690.90/s (n=123491)
Index: 11 wallclock secs (10.61 usr + 0.00 sys = 10.61 CPU) @ 43921.29/s (n=465961)
OptRE: 11 wallclock secs (10.59 usr + 0.00 sys = 10.59 CPU) @ 17239.59/s (n=182619)
m// loop: 11 wallclock secs (10.50 usr + 0.00 sys = 10.50 CPU) @ 6825.71/s (n=71670)
####
Benchmark: running BigRE, Index, OptRE, m// loop, each for at least 10 CPU seconds...
BigRE: 11 wallclock secs (10.39 usr + 0.00 sys = 10.39 CPU) @ 12548.26/s (n=130389)
Index: 10 wallclock secs (10.53 usr + 0.00 sys = 10.53 CPU) @ 56956.89/s (n=599813)
OptRE: 11 wallclock secs (10.53 usr + 0.00 sys = 10.53 CPU) @ 17720.63/s (n=186616)
m// loop: 11 wallclock secs (10.48 usr + 0.00 sys = 10.48 CPU) @ 7873.90/s (n=82550)
####
Benchmark: running BigRE, Index, OptRE, m// loop, each for at least 10 CPU seconds...
BigRE: 10 wallclock secs (10.59 usr + 0.00 sys = 10.59 CPU) @ 77.59/s (n=822)
Index: 11 wallclock secs (10.50 usr + 0.00 sys = 10.50 CPU) @ 1427.58/s (n=14991)
m// loop: 11 wallclock secs (10.47 usr + 0.00 sys = 10.47 CPU) @ 686.50/s (n=7187)
####
Benchmark: running BigRE, Index, OptRE, m// loop, each for at least 10 CPU seconds...
BigRE: 10 wallclock secs (10.63 usr + 0.00 sys = 10.63 CPU) @ 2025.69/s (n=21523)
Index: 11 wallclock secs (10.47 usr + 0.00 sys = 10.47 CPU) @ 19019.11/s (n=199092)
OptRE: 11 wallclock secs (10.51 usr + 0.00 sys = 10.51 CPU) @ 2702.33/s (n=28415)
m// loop: 11 wallclock secs (10.45 usr + 0.00 sys = 10.45 CPU) @ 9593.84/s (n=100294)
####
use strict;
use warnings;
use Benchmark;
my @matchlist = qw( this that these those some other too);
my $string = 'here we have a typical sentance which has a match near the othr end';
my $bigregex = join '|', map quotemeta($_), @matchlist;
my $byhandre = 'th(is|at|ese|ose)|some|other|too';
timethese(shift, {
'Index', 'SimpleIndex',
'm// loop', 'Match',
'BigRE', 'BigRE',
'OptRE', 'ByHand',
} );
sub SimpleIndex {
for (@matchlist) {
return 1 if(index($string, $_) != $[-1 );
}
0;
}
sub Match {
for (@matchlist) {
return 1 if( $string =~ /$_/io );
}
0;
}
sub BigRE {
return 1 if( $string =~ /$bigregex/io );
0;
}
sub ByHand {
return 1 if( $string =~ /$byhandre/io );
0;
}