Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Is it worth the reference?

by chromatic (Archbishop)
on Sep 20, 2000 at 02:45 UTC ( [id://33209]=note: print w/replies, xml ) Need Help??


in reply to Is it worth the reference?

This will actually be (a little) slower, because you're going through another level of indirection. As japhy and TGI have already pointed out, copying a large data structure to the stack for a subroutine is often more expensive.

What you gain in this case is nothing. You're also using a few bytes more memory in your snippet than you would be using without the reference -- just not enough to count.

However, when you want to pass two arrays into a function, you'll be very glad you know how to take a reference to an array.

In general, unless you need to use them, don't.

Replies are listed 'Best First'.
RE: Re: Is it worth the reference?
by BlaisePascal (Monk) on Sep 20, 2000 at 06:33 UTC
    In general, unless you need to use [array references[]], don't.
    I wouldn't necessarily go that far.

    In this instance, no, the array ref is not worth it, I'll admit, but notice nobody criticised his use of hash references.

    The key guide meonkeys should use to decide between arrays and array refs is: Does the use of one over the other make the program easier to read, write, and understand?

    If using array refs make the program easier to read, write, and understand, the savings from that will (usually) dwarf the extra time spent in the deref.

    (This is not a license to use them gratuitously, but rather to use them sensibly. I think the use in this snippit is obviously gratuitous (even to meonkeys).

    To answer meonkeys' final question (what are array refs good for?): Array refs are useful when it is necessary or convenient to treat an entire array as a single scalar:

    • storing an array into another array or hash
    • passing multiple arrays into subroutines while maintaining their distinct identity
    • when the array represents a single "unit" of data (such as a complex number stored as a 2-element array)
    • etc
    For the last, if your data is that complicated, it might be reasonable to start thinking of making an object out of it, and an array ref is one possibility for an implementation.

    When you just want an ordered collection of values, an array will probably be easier to understand and faster than the array ref. When you need to think of the contents of the array as "one thing", an array ref will probably be easier to understand.

    Just my 2 cents...

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2024-04-19 05:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found