Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: The /p modifier in Perl5.10 regexps

by lodin (Hermit)
on Aug 30, 2009 at 12:01 UTC ( [id://792173]=note: print w/replies, xml ) Need Help??


in reply to The /p modifier in Perl5.10 regexps

The point is that $` with friends slow down every other pattern as well. If you use /p you will still have a comparatively slow match, but it won't effect the other matches.

use 5.010; use strict; use warnings; use Benchmark qw(cmpthese timethese); my $r1 = timethese( -1, { p_before => sub { 'hola juan' =~ /ju/p }, no_p_before => sub { 'hola juan' =~ /ju/ }, }, 'none'); eval '$`'; my $r2 = timethese( -1, { p_after => sub { 'hola juan' =~ /ju/p }, no_p_after => sub { 'hola juan' =~ /ju/ }, }, 'none'); cmpthese({ %$r1, %$r2 }); __END__ Rate p_before no_p_after p_after no_p_before p_before 1067899/s -- -2% -2% -80% no_p_after 1084733/s 2% -- -1% -80% p_after 1091288/s 2% 1% -- -79% no_p_before 5318863/s 398% 390% 387% --
As you see, the pattern with /p and the patterns executed after $` has been seen are equally fast, and that makes sense since they do the same work. The pattern without /p and before $` is however significantly faster, since it does not have to compute the extra match variables.

Hope this helps,
lodin

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://792173]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2024-04-26 09:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found