rwlogo
SourcePro C++ 12.0

SourcePro® C++ API Reference Guide



   SourcePro C++
Documentation Home

RWTimer Struct Reference
[Miscellaneous]

Measures two types of time, system and user time, both of which can be reported as cumulative if desired. More...

#include <rw/timer.h>

List of all members.

Public Types

enum  Type { userTime, systemTime, USER, SYSTEM }

Public Member Functions

 RWTimer ()
void start ()
void stop ()
void reset ()
rwint64 time (int=userTime|systemTime) const
double elapsedTime () const
rwint64 elapsedSeconds () const
rwint64 elapsedMilliseconds () const
rwint64 elapsedMicroseconds () const

Detailed Description

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.

Synopsis

 #include <rw/timer.h>
 RWTimer timer;

Persistence

None

Examples

 #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;
 }

Member Enumeration Documentation

The Type type indicates the type of time returned by the time() member function.

Enumerator:
userTime 

Cumulated user time.

systemTime 

Cumulated system time.

USER 
Deprecated:
User time: enforce deprecation by defining the macro RW_AVOID_PREPROCESSOR_PROBLEMS.
SYSTEM 
Deprecated:
System time: enforce deprecation by defining the macro RW_AVOID_PREPROCESSOR_PROBLEMS.

Constructor & Destructor Documentation

RWTimer::RWTimer (  )  [inline]

Constructs a new timer. The timer does not start running until start() is called.


Member Function Documentation

rwint64 RWTimer::elapsedMicroseconds (  )  const

Returns the number of microseconds that have elapsed while the timer was in the running state.

rwint64 RWTimer::elapsedMilliseconds (  )  const

Returns the number of milliseconds that have elapsed while the timer was in the running state.

rwint64 RWTimer::elapsedSeconds (  )  const

Returns the number of seconds that have elapsed while the timer was in the running state.

double RWTimer::elapsedTime (  )  const

Returns the amount of user and system time, in seconds, that has accumulated while the timer was in the running state.

void RWTimer::reset (  )  [inline]

Resets (and stops) the timer.

void RWTimer::start (  ) 

Puts the timer in the "running" state. Time accumulates while in this state.

void RWTimer::stop (  ) 

Puts the timer in the "stopped" state. Time does not accumulate while in this state.

rwint64 RWTimer::time ( int  = userTime|systemTime  )  const

Returns the amount of time, in microseconds, measured by the object. The parameter is an integer bitmask indicating the type of time requested.

 All Classes Functions Variables Typedefs Enumerations Enumerator Friends

© 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.