Module: Essential Tools Module Group: Miscellaneous Classes
Does not inherit
elapsedMicroseconds() elapsedMilliseconds() elapsedSeconds() |
elapsedTime() reset() RWTimer() |
start() stop() time() |
Type |
#include <rw/timer.h> RWTimer timer;
This class can measure two types of time: system time and user time, both of which can be reported as cumulative, if desired. The timer has two states: running and stopped. The timer measures the total amount of time spent in the "running" state since it was either constructed or reset.
The timer is put into the "running" state by calling member function start(). It is put into the "stopped" state by calling stop().
RWTimer uses different APIs on Windows and UNIX; on Windows it uses GetProcessTime, whereas on UNIX it uses the getrusage system call.
The time intervals are stored inside the RWTimer objects as 64-bit integers. The resolution of the timer is microseconds. The wrap-up interval for the counters is > 500,000 years.
None
This example prints out the amount of CPU time used while looping for 5 seconds ( of wall-clock time , as measured using class RWDateTime).
#include <iostream> #include <rw/timer.h> #include <rw/tools/datetime.h> int main() { std::cout << "Starting the timer ...\n"; std::cout << "... and looping for 5 seconds using RWDateTime as clock ...\n"; RWTimer t; t.start(); // Start the timer // Loop for 5 seconds: RWDateTime tmp (RWDateTime::setCurrentTime); for (; (RWDateTime::now () - tmp) < 5000;) { } t.stop(); // Stop the timer std::cout << "The elapsed time was: \n"; std::cout << "System : " << double (t.time (RWTimer::systemTime)) / 1000000.0F << " seconds.\n"; std::cout << "User : " << double (t.time (RWTimer::userTime)) / 1000000.0F << " seconds.\n"; std::cout << "Total : " << double (t.time (RWTimer::userTime | RWTimer::systemTime)) / 1000000.0F << " seconds.\n"; return 0; }
Program output (exact value may differ):
Starting the timer ... ... and looping for 5 seconds using RWDateTime as clock ... The elapsed time was: System : 0.004 seconds. User : 4.99524 seconds. Total : 4.99924 seconds.
enum Type { userTime = 1, systemTime = 2 };
The Type type indicates the type of time returned by the time() member function (user, system, or cumulated user and system time).
The former enum values (USER, SYSTEM) have been retained, but are deprecated. You can refuse support for these values by defining the macro RW_AVOID_PREPROCESSOR_PROBLEMS.
RWTimer();
Constructs a new timer. The timer will not start running until start() is called.
rwint64 elapsedSeconds() const; rwint64 elapsedMilliseconds() const; rwint64 elapsedMicroseconds() const;
These three functions return the number of seconds, milliseconds, or microseconds respectively, that have elapsed while the timer was in the running state.
double elapsedTime() const;
Returns the amount of user and system time, in seconds, that has accumulated while the timer was in the running state.
rwint64 time(int=userTime|systemTime)const;
Returns the amount of time, in microseconds, measured by the object; the parameter is an integer bit mask indicating the type of time the user wishes to get.
void reset();
Resets (and stops) the timer.
void start();
Puts the timer in the "running" state. Time accumulates while in this state.
void stop();
Puts the timer in the "stopped" state. Time will not accumulate while in this state.
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.