in reply to Re^3: Ways to delete start of string
in thread Ways to delete start of string

For an example of multiplier loops inside the subroutines, have a look at Re: Bug or WAD in lvalue substr? (again.).

If you call a sub in a loop, you are timing how long it takes to call the sub as well as the time it takes to execute the contents of the sub. Often this is not an issue since the contents of the sub take a lot longer than just calling the sub itself. If the loop is inside the sub instead, then you can focus more on the contents of the loop rather than the time it takes to call subs, which is important when you're timing something that's as fast as sub calls.

For more on benchmarking in general, have a look at the "Benchmarking Perl" chapter in Mastering Perl.

Replies are listed 'Best First'.
Re^5: Ways to delete start of string (micro ops)
by tye (Sage) on May 27, 2008 at 18:00 UTC
    If you call a sub in a loop, you are timing how long it takes to call the sub as well as the time it takes to execute the contents of the sub.

    Note that Benchmark goes to some lengths to try to subtract out the time taken by the "calling the sub" part. Of course, these attempts can certainly be unsuccessful (to the point of Benchmark declaring defeat or just to the point of Benchmark producing meaningless results; though I think that interpretation is often valid even when one has worked around the issue as you described).

    which is important when you're timing something that's as fast as sub calls

    There is very little that I would characterize as "important" when trying to time something in Perl that is about as fast as a sub call. Well, other than the idea of "you are likely wasting your time". :)

    - tye