Source
xxxxxxxxxx
namespace casa {
class C11Timer {
// <summary>
// casacore::Timer based on C++11 chrono library
// </summary>
// <reviewed reviewer="" date="" tests="" demos="">
// </reviewed>
// <prerequisite>
// </prerequisite>
// <etymology>
// casacore::Timer based on C++11 chrono library
// </etymology>
// <synopsis>
// casacore::Timer based on C++11 chrono library
// </synopsis>
public:
// create the timer but do not start it.
C11Timer();
~C11Timer();
// return mean duration, in seconds, of all start/stop cycles
casacore::Double meanDuration() const;
// duration in seconds of most recent start/stop cycle
casacore::Double duration() const;
// number of start/stop cycles
casacore::uInt nCycles() const;
// (re)start the timer
void start();
// stop the timer
void stop();
// total duration in seconds, sum of all start/stop cycles
// doesn't include the duration of the current cycle if the
// timer is currently running
casacore::Double totalDuration() const;
private:
std::chrono::steady_clock::time_point _start;
std::chrono::duration<double> _duration, _totalDuration;
casacore::uInt _nCycles;
};
}