Timer.h
Classes
- Timer -- measure the time it takes to execute parts of a program (full description)
Interface
- Public Members
- Timer()
- void mark()
- double user() const
- double system() const
- double all() const
- double real() const
- void show() const
- void show(ostream &os) const
- void show(const String&) const
- void show(ostream &os, const String&prefix) const
- double user_usec() const
- double system_usec() const
- double all_usec() const
- Private Members
- #elif defined(AIPS_SOLARIS) || defined(AIPS_IRIX) || defined(AIPS_OSF) || defined(__hpux__) || defined(AIPS_LINUX) || defined(AIPS_DARWIN) tms usage0
Review Status
- Reviewed By:
- Paul Shannon
- Date Reviewed:
- 1995/03/01/
Synopsis
The Timer class provides an interface to system timing. It
allows a C++ program to record the time between a reference
point (mark) and now. This class uses the system time(2)
interface to provide time resolution at either millisecond or
microsecond granularity, depending upon operating system
support and features. Since the time duration is stored in
a 32-bit word, the maximum time period before rollover
occurs is about 71 minutes.
Due to operating system dependencies, the accuracy of all
member function results may not be as documented. For example
some operating systems do not support timers with
microsecond resolution. In those cases, the values returned
are provided to the nearest millisecond or other unit of
time as appropriate. See the Timer header file for system-
specific notes.
This Timer class is based on the TI COOL library
Timer class
Example
Here's how to create a timer, start it (the 'mark' member function)
and display a breakdown. Recall that
realtime = user time + system time
Timer timer; // the mark is set at construction time
timer.mark(); // if you want to restart the clock
...do some calculation...
cout << "user: " << timer.user () << endl;
cout << "system: " << timer.system () << endl;
cout << "real: " << timer.real () << endl;
To Do
- it might be useful to have a stop () member function: for
really precise timing, the successive calls to user, system
and real all happen at measurably different times
- provide an enquiry function that reports the resolution of
the timer
- add 'start' member function, a synonym for 'mark' but more
comprehensible
Member Description
Construct a timer and set the mark ("mark()").
Set the timer mark -- i.e., start the clock ticking
double user() const
Get the user time (in seconds) since last "mark()".
double system() const
Get the system time (in seconds) since last "mark()".
double all() const
Get the user+system time (in seconds) since last "mark()".
double real() const
Get the real time (in seconds) since last "mark()".
void show() const
void show(ostream &os) const
Show real, user, system time (in seconds) on cout or a user supplied
stream.
void show(const String&) const
void show(ostream &os, const String&prefix) const
Show real, user, system time (in seconds) on cout or a user supplied
stream preceeded by the string parameter.
Get the user time (in microseconds) since last "mark()".
Get the system time (in microseconds) since last "mark()".
Get the user+system time (in microseconds) since last "mark()".
#elif defined(AIPS_SOLARIS) || defined(AIPS_IRIX) || defined(AIPS_OSF) || defined(__hpux__) || defined(AIPS_LINUX) || defined(AIPS_DARWIN) tms usage0