Ideally you would have the choice, and perl as it happens offers this choice.

Most of the time you want a copy (on the way in and on the way out of a subroutine), because it decouples the subroutine: You can just assume that your parameters are unchanged by a subroutine and that you can change the result of a subroutine without having to think about any side effects if you further process that result (moritz gave a simple example of these side effects).

Think about the last 10 subroutines you wrote. If you changed all these subroutines to return pointers to arrays instead of arrays (or vice versa) would you notice any speed difference? Probably not. And even if you did, could you have the same difference by only speeding up one of these 10? Probably. So is it faster to find that one subroutine to speed up or is it faster to think of how to avoid any side effects any time you write a call to a subroutine and find the bugs afterwards if you make a single mistake there


In reply to Re: Speed of Array Returns by jethro
in thread Speed of Array Returns by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.