Blame tests/gen_rx-pm.pl.in
|
Packit Service |
384592 |
#!@PERL@
|
|
Packit Service |
384592 |
#
|
|
Packit Service |
384592 |
# Generates a test file for comparing @rx and @pm speed.
|
|
Packit Service |
384592 |
#
|
|
Packit Service |
384592 |
use strict;
|
|
Packit Service |
384592 |
use Regexp::Assemble;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
srand(424242); # We want this static, so we can compare different runs
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
my $MIN = $ARGV[0] || 0;
|
|
Packit Service |
384592 |
my $MAX = $ARGV[1] || 5000;
|
|
Packit Service |
384592 |
my $INC = $ARGV[2] || int($MAX * .05);
|
|
Packit Service |
384592 |
my $ITERATIONS = 10000;
|
|
Packit Service |
384592 |
my $MINSTRLEN = 2;
|
|
Packit Service |
384592 |
my $MAXSTRLEN = 8;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
my $match = join '', ('a' .. 'z');
|
|
Packit Service |
384592 |
my @param = ();
|
|
Packit Service |
384592 |
my $i=$MIN;
|
|
Packit Service |
384592 |
while ($i <= $MAX) {
|
|
Packit Service |
384592 |
my $ra = Regexp::Assemble->new;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
while (@param < $i) {
|
|
Packit Service |
384592 |
unshift @param, rndstr();
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
$ra->add(@param);
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
printf (
|
|
Packit Service |
384592 |
"# rx: %6d\n".
|
|
Packit Service |
384592 |
"{\n".
|
|
Packit Service |
384592 |
" comment => \"rx1 %6d item(s)\",\n".
|
|
Packit Service |
384592 |
" type => \"op\",\n".
|
|
Packit Service |
384592 |
" name => \"rx\",\n".
|
|
Packit Service |
384592 |
" param => qr/%s/,\n".
|
|
Packit Service |
384592 |
" input => \"%s\",\n".
|
|
Packit Service |
384592 |
" ret => " . (@param ? 0 : 1) . ",".
|
|
Packit Service |
384592 |
" iterations => %d,\n".
|
|
Packit Service |
384592 |
"},\n",
|
|
Packit Service |
384592 |
$i,
|
|
Packit Service |
384592 |
$i,
|
|
Packit Service |
384592 |
(@param ? '(?:' . join('|', @param) . ')' : ""),
|
|
Packit Service |
384592 |
$match,
|
|
Packit Service |
384592 |
$ITERATIONS,
|
|
Packit Service |
384592 |
);
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
printf (
|
|
Packit Service |
384592 |
"# rx-optimized: %6d\n".
|
|
Packit Service |
384592 |
"{\n".
|
|
Packit Service |
384592 |
" comment => \"rx2 %6d item(s)\",\n".
|
|
Packit Service |
384592 |
" type => \"op\",\n".
|
|
Packit Service |
384592 |
" name => \"rx\",\n".
|
|
Packit Service |
384592 |
" param => qr/%s/,\n".
|
|
Packit Service |
384592 |
" input => \"%s\",\n".
|
|
Packit Service |
384592 |
" ret => " . (@param ? 0 : 1) . ",".
|
|
Packit Service |
384592 |
" iterations => %d,\n".
|
|
Packit Service |
384592 |
"},\n",
|
|
Packit Service |
384592 |
$i,
|
|
Packit Service |
384592 |
$i,
|
|
Packit Service |
384592 |
(@param ? $ra->as_string : ""),
|
|
Packit Service |
384592 |
$match,
|
|
Packit Service |
384592 |
$ITERATIONS,
|
|
Packit Service |
384592 |
);
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
printf (
|
|
Packit Service |
384592 |
"# pm: %6d\n".
|
|
Packit Service |
384592 |
"{\n".
|
|
Packit Service |
384592 |
" comment => \"pm1 %6d item(s)\",\n".
|
|
Packit Service |
384592 |
" type => \"op\",\n".
|
|
Packit Service |
384592 |
" name => \"pm\",\n".
|
|
Packit Service |
384592 |
" param => \"%s\",\n".
|
|
Packit Service |
384592 |
" input => \"%s\",\n".
|
|
Packit Service |
384592 |
" ret => 0,".
|
|
Packit Service |
384592 |
" iterations => %d,\n".
|
|
Packit Service |
384592 |
"},\n",
|
|
Packit Service |
384592 |
$i,
|
|
Packit Service |
384592 |
$i,
|
|
Packit Service |
384592 |
join(' ', @param ? @param : ("''")),
|
|
Packit Service |
384592 |
$match,
|
|
Packit Service |
384592 |
$ITERATIONS,
|
|
Packit Service |
384592 |
);
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
$i = ($i == $MIN) ? ($i + $INC) - ($i % $INC) : $i + $INC;
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
|
|
Packit Service |
384592 |
sub rndstr {
|
|
Packit Service |
384592 |
my @c = ('a' .. 'z');
|
|
Packit Service |
384592 |
my $rndstr;
|
|
Packit Service |
384592 |
my $max = int(rand($MAXSTRLEN - $MINSTRLEN)) + $MINSTRLEN;
|
|
Packit Service |
384592 |
foreach (1 .. $max) {
|
|
Packit Service |
384592 |
$rndstr .= $c[rand @c];
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
# We need a string that is not in another string for "last"
|
|
Packit Service |
384592 |
if ($match =~ m/$rndstr/) {
|
|
Packit Service |
384592 |
$rndstr = rndstr();
|
|
Packit Service |
384592 |
}
|
|
Packit Service |
384592 |
return $rndstr;
|
|
Packit Service |
384592 |
}
|