1 #ifndef CRYPTOPP_HRTIMER_H
2 #define CRYPTOPP_HRTIMER_H
5 #ifndef HIGHRES_TIMER_AVAILABLE
9 NAMESPACE_BEGIN(CryptoPP)
11 #ifdef HIGHRES_TIMER_AVAILABLE
12 typedef word64 TimerWord;
14 typedef clock_t TimerWord;
21 enum Unit {SECONDS = 0, MILLISECONDS, MICROSECONDS, NANOSECONDS};
22 TimerBase(Unit unit,
bool stuckAtZero) : m_timerUnit(unit), m_stuckAtZero(stuckAtZero), m_started(
false) {}
24 virtual TimerWord GetCurrentTimerValue() =0;
25 virtual TimerWord TicksPerSecond() =0;
28 double ElapsedTimeAsDouble();
29 unsigned long ElapsedTime();
32 double ConvertTo(TimerWord t, Unit unit);
35 bool m_stuckAtZero, m_started;
36 TimerWord m_start, m_last;
46 TimerWord GetCurrentTimerValue();
47 TimerWord TicksPerSecond();
54 Timer(Unit unit = TimerBase::SECONDS,
bool stuckAtZero =
false) :
TimerBase(unit, stuckAtZero) {}
55 TimerWord GetCurrentTimerValue();
56 TimerWord TicksPerSecond();
measure CPU time spent executing instructions of this thread (if supported by OS) ...