Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Equivalency of Code

by blazar (Canon)
on Feb 07, 2005 at 11:11 UTC ( #428627=note: print w/replies, xml ) Need Help??


in reply to Equivalency of Code

In addition and not in contraddiction with what has already been said, you may be interested in -MO=Concise, see B::Concise.

Replies are listed 'Best First'.
Re^2: Equivalency of Code
by stvn (Monsignor) on Feb 07, 2005 at 11:43 UTC

    This was actually my first instinct too, here was the output I got from testing with B::Concise.

    stvn% perl -MO=Concise -e '$x++' 5 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 1 -e:1) v ->3 4 <1> preinc[t2] vK/1 ->5 - <1> ex-rv2sv sKRM/1 ->4 3 <#> gvsv[*x] s ->4 -e syntax OK stvn% perl -MO=Concise -e '$x += 1' 6 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 1 -e:1) v ->3 5 <2> add[t2] vKS/2 ->6 - <1> ex-rv2sv sKRM/1 ->4 3 <#> gvsv[*x] s ->4 4 <$> const[IV 1] s ->5 -e syntax OK stvn% perl -MO=Concise -e '$x = $x + 1' 8 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 1 -e:1) v ->3 7 <2> sassign vKS/2 ->8 5 <2> add[t3] sK/2 ->6 - <1> ex-rv2sv sK/1 ->4 3 <#> gvsv[*x] s ->4 4 <$> const[IV 1] s ->5 - <1> ex-rv2sv sKRM*/1 ->7 6 <#> gvsv[*x] s ->7 -e syntax OK
    You can see that the x += 1 and x = x + 1 are similar, but not enough to call equivalent. Besides I am not sure that opcode equivalence would actually work since perl performs optimizations on the opcode tree during compilation which you would not want to include in your comparisons.

    -stvn
      This was actually my first instinct too, here was the output I got from testing with B::Concise.
      Indeed, it was just a suggestion along the lines of "just look there", you may be interested in it. Actually one of the most interesting points is exactly that it allows you to see the optimizations that the perl compiler makes...

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2021-10-27 23:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My first memorable Perl project was:







    Results (95 votes). Check out past polls.

    Notices?