I've got the two following snippets:
PERL:
my $fn = shift; exit 1 if not defined $fn; my $input = do { open my $fh, "<", $fn or die "open failed"; local $/; <$fh> }; my $count = () = $input =~ m/mul\(\d{1,3},\d{1,3}\)/g; print "Found $count matches.\n";
PYTHON:
import re import sys if len(sys.argv) < 2: exit(1) mul_re = re.compile(r"mul\(\d{1,3},\d{1,3}\)") with open (sys.argv[1], "r") as f: input = f.read() count = len(mul_re.findall(input)) print(f"Found {count} matches.")
Which do more or less the same thing. Running both scripts on the same file, I found that the Python version runs a full second faster! 1.375s as opposed to Perl's 2.466s
I had always thought that Perl's regex and parsing performance was particularly strong compared to other languages, so this was a shocker for me. What is it that I am doing wrong? How can I make the Perl version run as fast as the one in Python?
Thanks. -- Dave
In reply to Python regex faster than Perl? by dave93
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |