Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: Re: Re: Re^2: meaning of /o in regexes

by BrowserUk (Pope)
on Dec 06, 2002 at 17:28 UTC ( #218104=note: print w/replies, xml ) Need Help??

in reply to Re^4: meaning of /o in regexes
in thread meaning of /o in regexes

The task that started me on the quest for speed was indeed a monster regex, it was also being called many times in a tight loop. As the regex was essentially repetitious, I originally thought that compiling the base regex with qr// and then using that in conjuction with a repeat count and the none repeating elements also compliled with /o might leach some benefits, but the reverse was true. I settled for programically generating the regex (using x n) into a single large regex and then compiling it with qr// (which appeared to give some slight performance benefit over /o). This was possibly due to the fact that when compiled with qr//, you can use the resultant variable directly ($string =~ $compiled_re) rather than needing to embed it within an m// operator (m/$compiled_re/). Maybe its slightly quicker to execute the former than the latter? The difference seemed significant enough to make it worthwhile..

Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.

  • Comment on Re: Re: Re: Re^2: meaning of /o in regexes

Replies are listed 'Best First'.
Re^6: meaning of /o in regexes
by diotalevi (Canon) on Dec 06, 2002 at 17:36 UTC

    You are slightly wrong: <code$qr = qr/./; $qr =~ m/$qr/; $qr =~ $qr;</code> is exactly identical. Again, some opcode info to illuminate. It also yields the slightly interesting form $text = 'abcd'; $text =~ qr/./ but then... maybe that's not quite normal ;-)

    i <@> leave[t1] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 5 v ->3 5 <2> sassign vKS/2 ->6 3 </> qr(/./) s ->4 - <1> ex-rv2sv sKRM*/1 ->5 4 <> gvsv s ->5 6 <;> nextstate(main 5 v ->7 >> Here you see the $qr =~ m/$qr/ form b </> match() vKS ->c - <1> ex-rv2sv sK/1 ->8 7 <> gvsv s ->8 a <|> regcomp(other->b) sK/1 ->b 8 <1> regcreset sK/1 ->9 - <1> ex-rv2sv sK/1 ->a 9 <> gvsv s ->a >> And here you see the $qr =~ $qr form c <;> nextstate(main 5 v ->d h </> match() vKS ->i - <1> ex-rv2sv sK/1 ->e d <> gvsv s ->e g <|> regcomp(other->h) sK/1 ->h e <1> regcreset sK/1 ->f - <1> ex-rv2sv sK/1 ->g f <> gvsv s ->g
    __SIG__ use B; printf "You are here %08x\n", unpack "L!", unpack "P4", pack "L!", B::svref_2object(sub{})->OUTSIDE;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://218104]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2017-01-22 10:43 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (187 votes). Check out past polls.