If the options are use a sub, or repeat the same code in each place, you will save nothing by avoiding the sub.

Usaing a sub does require that all arguments are put on the stack, and then pulled off again (array opts on <code lang="perl">@_</code>). Not using a sub means the parser has to do that much more work. In a benchmark i did sometime ago, trying to recreate C pre-processor macro, i found the extra parsing time was much longer than the sub stack work.

That aside, there is a way to minimize the main of the function call structure. When passing arrays and hashes, pass references. This makes a single RV (size of a scalar in effect) trasnfer as oposed to an entire array's worth of elements.

Also, as much as i will optimize everything, there has to be a point , i have resently learned, where you figure you will be spending time waiting on the network and disks enough that the changes will not help. So, in short ...

  1. functions are marginally slow.
  2. use them anyway
  3. ob-fu for speed is no better, just un-maintainable


my $cents = 2;
i had a memory leak once, and it ruined my favorite shirt.

In reply to Re: Efficiency and overhead of subs by MZSanford
in thread Efficiency and overhead of subs by stillinger

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.