Perl probably isn't as efficient at reading a file multiple times as you think it is. It's more likely the reason you didn't see much difference between reading it once and reading it twice is that you were running it on a decent operating system that was not memory-loaded, and so the first time you read it the OS kept the contents cached in memory, so the second time around it was read from memory rather than from disk.

Whenever you are opening a file more than once you should keep this in mind, because the test showing no speed improvement may change in the future, especially if you attempt to run the script on a shared server which has more of a memory crunch, and thus doesn't keep things in the disk buffer for as long.

How you benchmark it could also have a big impact on the results, as the bigger the 'big_subs' are, the less influence the relatively small impact of reading the file will be.


We're not surrounded, we're in a target-rich environment!

In reply to Re: A Luser's Benchmarking Tale by jasonk
in thread A Luser's Benchmarking Tale by Melly

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.