in reply to Efficiency and overhead of subs

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.