あげいん

こないだの正規表現ベンチ、Perl 5.8.6 にて。

$ cat regex.pl
$query = "b" x (1024 * 1024) . "x";
$pat = '^b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b$';
print ($query =~ $pat ? "yes\n" : "no\n");
$ 
$ time perl regex.pl
no

real    0m0.009s
user    0m0.004s
sys     0m0.005s

超速い。Perl すごい!

おもむろに、パターンの最後の b[b] に変えてみる。

$ cat regex2.pl
$query = "b" x (1024 * 1024) . "x";
$pat = '^b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*[b]$';
print ($query =~ $pat ? "yes\n" : "no\n");
$ 
$ time perl regex2.pl
^C

real    60m0.461s
user    59m47.757s
sys     0m3.055s

超遅い。Perl すごい!

【追記】5.10.0 版(?)

^b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*[ab]$
^b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b(?:.*b|.*b)$