Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^3: Summing Up Array Elements By Group

by hbm (Hermit)
on Jan 21, 2009 at 18:34 UTC ( [id://737906]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Summing Up Array Elements By Group
in thread Summing Up Array Elements By Group

ikegami, this one knocks me down! Did you know in advance that ++$b would be faster than $b++? Do you know why that is?
  • Comment on Re^3: Summing Up Array Elements By Group

Replies are listed 'Best First'.
Re^4: Summing Up Array Elements By Group
by gwadej (Chaplain) on Jan 21, 2009 at 18:55 UTC

    $b++ makes a copy so that it can return the previous value. ++$b does not need to.

    I have run into this issue before in C++, but it was normally not a problem for integers. Scalars on the other hand are a different beast.

    G. Wade

      it was normally not a problem for integers.

      I find it odd that it would matter at all for ints.

      ++a --- inc a mov a, reg a++ --- mov a, reg inc a

        It doesn't matter for ints. But, for various kinds of iterators and other classes supporting ++ it can. (I guess I didn't make that clear.)

        That's why the suggested practice in C++ lately has been to use ++a unless you actually need the previous value. That way when you replace that index with an iterator things don't get any slower.

        G. Wade
Re^4: Summing Up Array Elements By Group
by ikegami (Patriarch) on Jan 21, 2009 at 18:57 UTC

    $b++ needs to create a new anonymous scalar because the result is different than the $b.

    ++$b just returns a pointer to $b.

    $ perl -le'my $b = 4; $r = \( $b++ ); $$r = 20; print $b' 5 $ perl -le'my $b = 4; $r = \( ++$b ); $$r = 20; print $b' 20
      Nice! One point for your original and another for gwadej's explanation.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2024-04-26 00:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found