Note that growing the array doesn't have to move all of the contents of the array, just the memory for the array itself (mostly the references to the elements of the array).

Shrinking an array will never move its memory block. I doubt it will free any memory either, though undefing it will allow that memory to be reused.

In theory, pop()ing would be more efficient than shift()ing since every so often the array will be moved down so that the gap in front of its memory space is not huge. But in practice this is done infrequently enough that it usually doesn't matter. However, if you have a huge array, I'd probably play it safe and use push() and pop() and pre-extend the space for the array if possible.

See also Shift, Pop, Unshift and Push with Impunity!.

This node has been updated.

        - tye (but my friends call me "Tye")

In reply to (tye)Re: Memory efficiency with arrays by tye
in thread Memory efficiency with arrays by Hot Pastrami

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.