There are two components to consider. First, hashes take more memory than arrays (assuming they store similar things). Second, it's slower to access an element in a hash.

On the other hand, it's a lot more convenient to look things up by key in a hash when you're dealing with stuff that lends itself to being named and accessed out of a particular order.

Having to iterate over an array to find an appropriate element repeatedly can kill the performance benefits.

Pseudohashes are one solution, but they're not widely used or appreciated, so it's hard to recommend them. A better approach is to use the constant pragma to alias array indexes to names, and only access them through the names. This has the additional benefit or drawback of not allowing autovivification of hash keys within the object.

Most of what I use are hashes. Speed of data member access isn't a bottleneck for most of my stuff.

(Oh, and passing around a blessed reference doesn't make any difference in this case. The underlying access mechanisms do.)


In reply to Re: best structure for classes? by chromatic
in thread best structure for classes? by dshahin

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.