Wrapper for the system time query methods. More...
#include <timer.h>
Public Types | |
Timers | |
enum | TYPE { OFF = 0, USER_TIME = 1, WALLCLOCK_TIME = 2 } |
types of timers More... | |
Public Member Functions | |
Construction / destruction | |
Timer () | |
default constructor More... | |
Timer (const Timer &old) | |
copy constructor More... | |
Timer & | operator= (const Timer &old) |
assignment operator More... | |
virtual | ~Timer () |
Control | |
virtual void | reset ()=0 |
initialize timer, set timing accounts to zero. More... | |
virtual void | start ()=0 |
start timer, resume accounting user, system and real time. More... | |
virtual Real | stop ()=0 |
stop timer, return accounted user time. More... | |
virtual TYPE | type ()=0 |
return type of timer More... | |
Access | |
void | getLastTimes (Real *userTime, Real *systemTime, Real *realTime) const |
return accounted time. get accounted user, system, or real time when ticks were updated last More... | |
virtual Real | time () const =0 |
virtual Real | lastTime () const =0 |
return last accounted time without rechecking the clock More... | |
Real | realTimeLast () const |
return accounted real time without rechecking the clock More... | |
Types | |
enum soplex::Timer::{ RESET, STOPPED, RUNNING } | status |
status of the timer More... | |
Wrapper for the system time query methods.
In C or C++ programs, the usual way to measure time intervals, e.g., running times of some complex computations, is to call one of the provided system functions like clock(), time(), times(), gettimeofday(), getrusage() etc. By these functions one can gather information about the process' user and system time and the system clock (real time).
Unfortunately, these functions are rather clumsy. The programmer determines computation times by querying a (virtual) clock value at the beginning and another one at the end of some computation and converting the difference of these values into seconds. Some functions impose restrictions; for instance, the values of the ANSI C function clock() are of high resolution but will wrap around after about 36 minutes (cpu time). Most timing functions take some data structure as argument that has to be allocated before the call and from which the user has to pick up the information of interest after the call. Problems can arise when porting programs to other operating systems that do not support standards like POSIX etc.
In order to simplify measuring computation times and to hide the system-dependencies involved, a concept of timers accounting the process' system and real time is implemented. C and C++ interfaces are provided as a set of functions operating on timers and a timer class respectively.
Look into the file timerfactory.h to see how to switch between different timing types or to disable timing altogether.
The idea is to provide a type Timer for objects that act like a stopwatch. Operations on such an objects include: start accounting time, stop accounting, read the actual time account and reset the objects time account to zero.
After initialization, accounting for the time can be started by calling a function start(). Accounting is suspended by calling a function stop() and can be resumed at any time by calling start() again.
For convenience, the actually accounted user time is returned by stop() too. Function reset() re-initializes a timer clearing all time accounts.
|
protected |
enum TYPE |
|
virtual |
Definition at line 124 of file timer.h.
References Timer::getLastTimes(), Timer::lastTime(), Timer::realTimeLast(), Timer::reset(), Timer::start(), Timer::stop(), Timer::time(), and Timer::type().
Referenced by main(), SLUFactor::~SLUFactor(), SPxSimplifier::~SPxSimplifier(), SPxSolver::~SPxSolver(), and SoPlex::Statistics::~Statistics().
return accounted time. get accounted user, system, or real time when ticks were updated last
Referenced by Timer::~Timer().
|
pure virtual |
return last accounted time without rechecking the clock
Implemented in UserTimer, WallclockTimer, and NoTimer.
Referenced by Timer::~Timer().
Real realTimeLast | ( | ) | const |
return accounted real time without rechecking the clock
Referenced by Timer::~Timer().
|
pure virtual |
initialize timer, set timing accounts to zero.
Implemented in UserTimer, WallclockTimer, and NoTimer.
Referenced by SoPlex::Statistics::clearAllData(), SoPlex::Statistics::clearSolvingData(), SLUFactorRational::resetCounters(), SLUFactor::resetCounters(), SLUFactorRational::resetFactorTime(), SLUFactor::resetFactorTime(), SLUFactorRational::resetSolveTime(), SLUFactor::resetSolveTime(), SPxMainSM::simplify(), SPxSolver::solve(), and Timer::~Timer().
|
pure virtual |
start timer, resume accounting user, system and real time.
Implemented in UserTimer, WallclockTimer, and NoTimer.
Referenced by SoPlex::_decompSimplifyAndSolve(), SoPlex::_factorizeColumnRational(), SoPlex::_lift(), SoPlex::_optimizeRational(), SoPlex::_optimizeReal(), SoPlex::_performOptIRStable(), SoPlex::_preprocessAndSolveReal(), SoPlex::_project(), SoPlex::_readFileRational(), SoPlex::_readFileReal(), SoPlex::_reconstructSolutionRational(), SoPlex::_solveDecompositionDualSimplex(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_syncLPRational(), SoPlex::_syncLPReal(), SoPlex::_transformEquality(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformEquality(), SoPlex::_untransformFeasibility(), SoPlex::_untransformUnbounded(), SPxBasis::change(), CLUFactorRational::factor(), CLUFactor::factor(), SoPlex::loadSettingsFile(), main(), SoPlex::readBasisFile(), SPxMainSM::simplify(), SPxSolver::solve(), SLUFactorRational::solve2right4update(), SLUFactor::solve2right4update(), SLUFactorRational::solve3right4update(), SLUFactor::solve3right4update(), SLUFactorRational::solveLeft(), SLUFactor::solveLeft(), SLUFactor::solveRight(), SLUFactorRational::solveRight(), SLUFactorRational::solveRight4update(), SLUFactor::solveRight4update(), and Timer::~Timer().
|
pure virtual |
stop timer, return accounted user time.
Implemented in UserTimer, WallclockTimer, and NoTimer.
Referenced by SoPlex::_decompSimplifyAndSolve(), SoPlex::_factorizeColumnRational(), SoPlex::_lift(), SoPlex::_optimizeRational(), SoPlex::_optimizeReal(), SoPlex::_performOptIRStable(), SoPlex::_preprocessAndSolveReal(), SoPlex::_project(), SoPlex::_readFileRational(), SoPlex::_readFileReal(), SoPlex::_reconstructSolutionRational(), SoPlex::_solveDecompositionDualSimplex(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_syncLPRational(), SoPlex::_syncLPReal(), SoPlex::_transformEquality(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformEquality(), SoPlex::_untransformFeasibility(), SoPlex::_untransformUnbounded(), SPxBasis::change(), CLUFactorRational::factor(), CLUFactor::factor(), SoPlex::loadSettingsFile(), main(), SoPlex::readBasisFile(), SPxMainSM::simplify(), SPxSolver::solve(), SLUFactorRational::solve2right4update(), SLUFactor::solve2right4update(), SLUFactorRational::solve3right4update(), SLUFactor::solve3right4update(), SLUFactorRational::solveLeft(), SLUFactor::solveLeft(), SLUFactor::solveRight(), SLUFactorRational::solveRight(), SLUFactorRational::solveRight4update(), SLUFactor::solveRight4update(), and Timer::~Timer().
|
pure virtual |
Implemented in UserTimer, WallclockTimer, and NoTimer.
Referenced by SoPlex::_computeBasisInverseRational(), SoPlex::_decompSimplifyAndSolve(), SoPlex::_factorizeColumnRational(), SoPlex::_isSolveStopped(), SoPlex::_performOptIRStable(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::decompTerminate(), SLUFactorRational::getFactorTime(), SLUFactor::getFactorTime(), SLUFactorRational::getSolveTime(), SLUFactor::getSolveTime(), SPxBasis::getTotalUpdateTime(), main(), SoPlex::Statistics::print(), SoPlex::printDecompDisplayLine(), SoPlex::printShortStatistics(), SoPlex::solveTime(), CLUFactorRational::timeLimitReached(), SPxSimplifier::timeUsed(), and Timer::~Timer().
|
pure virtual |
return type of timer
Implemented in UserTimer, WallclockTimer, and NoTimer.
Referenced by SLUFactor::assign(), TimerFactory::switchTimer(), and Timer::~Timer().
enum { ... } status |
status of the timer
timer status
Referenced by Timer::operator=(), WallclockTimer::reset(), UserTimer::reset(), WallclockTimer::start(), UserTimer::start(), WallclockTimer::stop(), UserTimer::stop(), WallclockTimer::time(), and UserTimer::time().