I have a question about what is more efficient for a small lookup function with only a few thousand items. Specifically I have a function in a module and that module has a function which gets passed a string. The function needs to determine if that string is in a set of a few thousand strings or not. How is that done most efficiently, and does the "best" approach vary by scale?

One way might be to load a hash with the strings as keys, and then see if defined($hash{$string}) or if defined($hash{$string}) has a value set.

Another would be to have a chain of elsif statements, and have the function cascade through those until either the end is reached or a match has been found.

Which approach is more appropriate or efficient? Or are the better approaches which can be used?


In reply to Hash versus chain of elsifs by mldvx4

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.