Time::Stopwatch - phpMan

Command: man perldoc info search(apropos)  


Sections
NAME SYNOPSIS DESCRIPTION BUGS CHANGE LOG SEE ALSO AUTHORS
NAME
    Time::Stopwatch - Use tied scalars as timers

SYNOPSIS
        use Time::Stopwatch;
        tie my $timer, 'Time::Stopwatch';

        do_something();
        print "Did something in $timer seconds.\n";

        my @times = map {
            $timer = 0;
            do_something_else();
            $timer;
        } 1 .. 5;

DESCRIPTION
    The Time::Stopwatch module provides a convenient interface to timing
    functions through tied scalars. From the point of view of the user,
    scalars tied to the module simply increase their value by one every
    second.

    Using the module should mostly be obvious from the synopsis. You can
    provide an initial value for the timers either by assigning to them or
    by passing the value as a third argument to tie().

    If you have the module Time::HiRes installed, the timers created by
    Time::Stopwatch will automatically count fractional seconds. Do *not*
    assume that the values of the timers are always integers. You may test
    the constant "Time::Stopwatch::HIRES" to find out whether high
    resolution timing is enabled.

  A note on timing short intervals
    Time::Stopwatch is primarily designed for timing moderately long
    intervals (i.e. several seconds), where the overhead imposed by the
    tie() interface does not matter. With Time::HiRes installed, it can
    nonetheless be used for even microsecond timing, provided that
    appropriate care is taken.

    *   Explicitly initialize the timer by assignment. The first measurement
        taken before resetting the timer will be a few microseconds longer
        due to the overhead of the tie() call.

    *   Always subtract the overhead of the timing code. This is true in
        general even if you're not using Time::Stopwatch. (High-level
        benchmarking tools like Benchmark.pm do this automatically.) See the
        code example below.

    *   Take as many measurements as you can to minimize random errors. The
        Statistics::Descriptive module may be useful for analyzing the data.
        This advice is also true for all benchmarking.

    *   Remember that a benchmark measures the time take to run the
        benchmark. Any generalizations to real applications may or may not
        be valid. If you want real world data, profile the real code in real
        use.

    The following sample code should give a relatively reasonable
    measurement of a the time taken by a short operation:

        use Time::HiRes;  # high resolution timing required
        use Time::Stopwatch;

        use Statistics::Descriptive;
        my $stat = Statistics::Descriptive::Sparse->new();

        tie my $time, 'Time::Stopwatch';  # code timer
        tie my $wait, 'Time::Stopwatch';  # loop timer

        while ($wait < 60) {  # run for one minute
            my $diff = 0;
            $time = 0; do_whatever(); $diff += $time;
            $time = 0;                $diff -= $time;
            $stat->add_data($diff);
        }

        print("count: ", $stat->count(), " iterations\n",
              "mean:  ", $stat->mean(), " seconds\n",
              "s.d.:  ", $stat->standard_deviation(), " seconds\n");

    Note that the above code includes the time of the subroutine call in the
    measurement.

BUGS
    Since tied scalars do not (yet?) support atomic modification, use of
    operators like "$t++" or "$t *= 2" on timers will cause them to lose the
    time it takes to fetch, modify and store the value. I *might* be able to
    get around this by overloading the return value of "FETCH", but I doubt
    if it's worth the trouble. Just don't do that.

    There is no way to force low-resolution timing if Time::HiRes has been
    installed. I'm not sure why anyone would want to, since int() will do
    just fine if you want whole seconds, but still..

CHANGE LOG
    1.00 (15 Mar 2001)
        Explicitly localized $SIG{__DIE__} when testing for Time::HiRes
        availability. Added "A note on timing short intervals" to the POD
        documentation. Bumped version to 1, no longer beta.

    0.03 (27 Feb 2001)
        Modified tests to give more information, reduced subsecond accuracy
        test to 1/10 seconds to allow for inaccurate select()
        implementations. Tweaked synopsis and README.

SEE ALSO
    Time::HiRes, "tie" in perlfunc

    For a higher-level approach to timing, try (among others) the modules
    Time::SoFar, Devel::Timer, or Benchmark. Also see the profiling modules
    Devel::DProf, Devel::SmallProf and Devel::OpProf.

AUTHORS
    Copyright 2000-2001, Ilmari Karonen. All rights reserved.

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

    Address bug reports and comments to: perl AT itz.fi


Generated by phpMan Author: Che Dong On Apache Under GNU General Public License - MarkDown Format
2026-05-23 06:46 @216.73.217.24 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 TransitionalValid CSS!

^_back to top