UG

Ubiquity Generator framework

ParaSysTimer Class Reference

Class ParaSysTimer. More...

#include <paraSysTimer.h>

Inheritance diagram for ParaSysTimer:
ParaTimer

Public Member Functions

 ParaSysTimer ()
 default constructor More...
 
 ~ParaSysTimer ()
 destructor More...
 
void init (ParaComm *paraComm)
 initialize timer More...
 
double getElapsedTime ()
 get elapsed time More...
 
void start (void)
 start timer More...
 
void stop (void)
 stop timer More...
 
double getStartTime (void)
 get start time More...
 
double getRTimeInterval (void)
 get elapsed time from start time More...
 
double getRTime (void)
 get real time between start timne and stop time More...
 
double getUTime (void)
 get user time between start timne and stop time More...
 
double getSTime (void)
 get system time between start timne and stop time More...
 
- Public Member Functions inherited from ParaTimer
 ParaTimer ()
 constructor More...
 
virtual ~ParaTimer ()
 destructor More...
 
void setOffset (double time)
 
virtual void init (ParaComm *paraComm)=0
 initialize timer More...
 
virtual double getElapsedTime ()=0
 get elapsed time More...
 

Private Attributes

std::chrono::steady_clock::time_point startPoint
 real time at start() More...
 
std::chrono::steady_clock::time_point stopPoint
 real time at stop() More...
 
double uTimeStart
 process user CPU seconds at start() More...
 
double uTimeStop
 process user CPU seconds at stop() More...
 
double sTimeStart
 process system CPU seconds at start() More...
 
double sTimeStop
 process system CPU seconds at stop() More...
 

Additional Inherited Members

- Protected Attributes inherited from ParaTimer
double offset
 offset of start time More...
 

Detailed Description

Class ParaSysTimer.

Wall-clock timing uses std::chrono::steady_clock (monotonic, high resolution). Process CPU user/system time uses getrusage() where available.

(Historically the real-time path was implemented with times()/HZ under a SYSV code path. On Linux times() reports in units of sysconf(_SC_CLK_TCK) (100), but TICKS was defined as the kernel HZ, so the elapsed wall time was scaled by the wrong constant – a ~600 s run was measured as ~14 s, which in turn made the "limits/time" derived from it far too large. Using std::chrono removes the platform-specific tick arithmetic entirely.)

Definition at line 62 of file paraSysTimer.h.

Constructor & Destructor Documentation

◆ ParaSysTimer()

default constructor

Definition at line 76 of file paraSysTimer.h.

◆ ~ParaSysTimer()

destructor

Definition at line 86 of file paraSysTimer.h.

Member Function Documentation

◆ getElapsedTime()

double getElapsedTime ( )
virtual

get elapsed time

Returns
elapsed time

Implements ParaTimer.

Definition at line 105 of file paraSysTimer.h.

References ParaSysTimer::getRTimeInterval().

◆ getRTime()

double getRTime ( void  )

get real time between start timne and stop time

Returns
real time

Definition at line 129 of file paraSysTimer.cpp.

References ParaSysTimer::startPoint, and ParaSysTimer::stopPoint.

◆ getRTimeInterval()

double getRTimeInterval ( void  )

get elapsed time from start time

Returns
elapsed time

Definition at line 121 of file paraSysTimer.cpp.

References ParaSysTimer::startPoint.

Referenced by ParaSysTimer::getElapsedTime(), and ParaTimerTh::getElapsedTime().

◆ getStartTime()

double getStartTime ( void  )

get start time

Returns
start time

Definition at line 113 of file paraSysTimer.cpp.

References ParaSysTimer::startPoint.

Referenced by ParaCommCPP11::getStartTime(), and ParaCommPth::getStartTime().

◆ getSTime()

double getSTime ( void  )

get system time between start timne and stop time

Returns
system time

Definition at line 145 of file paraSysTimer.cpp.

References ParaSysTimer::sTimeStart, and ParaSysTimer::sTimeStop.

◆ getUTime()

double getUTime ( void  )

get user time between start timne and stop time

Returns
user time

Definition at line 137 of file paraSysTimer.cpp.

References ParaSysTimer::uTimeStart, and ParaSysTimer::uTimeStop.

◆ init()

void init ( ParaComm *  paraComm)
virtual

initialize timer

Parameters
paraCommcommunicator used

Implements ParaTimer.

Definition at line 94 of file paraSysTimer.h.

References ParaSysTimer::start().

◆ start()

◆ stop()

void stop ( void  )

Member Data Documentation

◆ startPoint

std::chrono::steady_clock::time_point startPoint
private

◆ sTimeStart

double sTimeStart
private

process system CPU seconds at start()

Definition at line 68 of file paraSysTimer.h.

Referenced by ParaSysTimer::getSTime(), and ParaSysTimer::start().

◆ sTimeStop

double sTimeStop
private

process system CPU seconds at stop()

Definition at line 69 of file paraSysTimer.h.

Referenced by ParaSysTimer::getSTime(), and ParaSysTimer::stop().

◆ stopPoint

std::chrono::steady_clock::time_point stopPoint
private

real time at stop()

Definition at line 65 of file paraSysTimer.h.

Referenced by ParaSysTimer::getRTime(), and ParaSysTimer::stop().

◆ uTimeStart

double uTimeStart
private

process user CPU seconds at start()

Definition at line 66 of file paraSysTimer.h.

Referenced by ParaSysTimer::getUTime(), and ParaSysTimer::start().

◆ uTimeStop

double uTimeStop
private

process user CPU seconds at stop()

Definition at line 67 of file paraSysTimer.h.

Referenced by ParaSysTimer::getUTime(), and ParaSysTimer::stop().