True, but still slower than python :-(
#!/bin/bash echo generate perl -wE 'for (1..10000000) { print int(rand 2) ? "xyzabcd" : ("mul(" +. int(rand 5000). "," . int(rand 5000) . ")" ) ; print "\n" unless in +t rand 10 }' > 1 echo python cat <<EOF | (time python3 - 1) 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.") EOF echo perl orig cat <<'EOF' | (time perl - 1) 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"; EOF echo perl line by line cat <<'EOF' | (time perl - 1) my $fn = shift; exit 1 if not defined $fn; my $count = 0; open my $fh, "<", $fn or die "open failed"; while (<$fh>) { ++$count while /mul\(\d{1,3},\d{1,3}\)/g; } print "Found $count matches.\n"; EOF echo perl tybalt cat <<'EOF' | (time perl - 1) my $fn = shift; exit 1 if not defined $fn; my $input = do { open my $fh, "<", $fn or die "open failed"; local $/; <$fh> }; my $count = 0; ++$count while $input =~ /mul\(\d{1,3},\d{1,3}\)/g; print "Found $count matches.\n"; EOF rm 1
python Found 200013 matches. real 0m0.515s user 0m0.475s sys 0m0.040s perl orig Found 200013 matches. real 0m0.725s user 0m0.681s sys 0m0.044s perl line by line Found 200013 matches. real 0m0.906s user 0m0.874s sys 0m0.032s perl tybalt Found 200013 matches. real 0m0.611s user 0m0.583s sys 0m0.028s
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]

In reply to Re^2: Python regex faster than Perl? by choroba
in thread Python regex faster than Perl? by dave93

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.