Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Efficiency of $$var, ${$var}

by athomason (Curate)
on Aug 20, 2001 at 09:09 UTC ( #106135=note: print w/replies, xml ) Need Help??

in reply to Efficiency of $$var, ${$var}

The difference is negligible. Benchmark will frequently answer questions like these from a practical standpoint:
use Benchmark 'cmpthese'; use strict; my $x = 0; our $y = \$x; cmpthese( 10000000, { 'braces' => sub { return ${ $y } }, 'nobraces' => sub { return $$y }, });
My output is this:
Benchmark: timing 10000000 iterations of braces, nobraces... braces: 2 wallclock secs ( 1.87 usr + 0.00 sys = 1.87 CPU) @ 53 +47593.58/s (n=10000000) nobraces: 1 wallclock secs ( 1.87 usr + 0.00 sys = 1.87 CPU) @ 53 +47593.58/s (n=10000000) Rate nobraces braces nobraces 5347594/s -- 0% braces 5347594/s 0% --
If there is a difference, it's not terribly significant. For more complicated references, there may be some loss one way or another, but I doubt it would be much, if anything. Best as I could tell from using B::Deparse, the opcodes generated are different, but they likely work out to about the same thing (at least for hard refereneces... which you should be using exclusively). I find braces generally obnoxious, and so I avoid them when possible. However, they're a necessary evil, as demonstrated by the difference in y and z in the following:
my $x = [ [ 1, 2 ], [ 3, 4 ] ]; my @y = @$x->[ 0 ]; my @z = @{ $x->[ 0 ] };

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2017-03-27 06:07 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (315 votes). Check out past polls.