Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
Good day, everyone.

It is commonly known that it is mildly inefficient to tack items onto an array one by one, particularly with large amounts of data. This is less true if the array is pre-extended, however. If I understand correctly, this is because the array has to find a hunk of RAM big enough to hold the array with the new data, and move itself to the new spot in its entirety, which can be slow.

What I am wondering is this... does the same work backwards? If you pop or shift items off a large array one at a time, does it simply deallocate the memory those elements used, or does it still have to move the whole dad-gum array with each removal?

The reason I ask is because I am using an array which holds quite a remarkable amount of data, and I need to rifle through it only once. It occurred to me that it may be a good idea to shift() each element off the array as I go, therefore freeing up the memory a bit sooner, but if the array must be relocated in memory with each shift(), that would aggravate the problem rather than soothe it.

An alternative is that I could just find something better to do with my time than belly-aching about the finer points of array memory allocation in Perl... but that would be downright loony.

Thanks,

Hot Pastrami

In reply to 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":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

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

    No recent polls found