📄 hrtimer.h
字号:
#ifndef CRYPTOPP_HRTIMER_H#define CRYPTOPP_HRTIMER_H#include "config.h"#ifndef HIGHRES_TIMER_AVAILABLE#include <time.h>#endifNAMESPACE_BEGIN(CryptoPP)#ifdef HIGHRES_TIMER_AVAILABLE typedef word64 TimerWord;#else typedef clock_t TimerWord;#endif//! _class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE TimerBase{public: enum Unit {SECONDS = 0, MILLISECONDS, MICROSECONDS, NANOSECONDS}; TimerBase(Unit unit, bool stuckAtZero) : m_timerUnit(unit), m_stuckAtZero(stuckAtZero), m_started(false) {} virtual TimerWord GetCurrentTimerValue() =0; // GetCurrentTime is a macro in MSVC 6.0 virtual TimerWord TicksPerSecond() =0; // this is not the resolution, just a conversion factor into seconds void StartTimer(); double ElapsedTimeAsDouble(); unsigned long ElapsedTime();private: double ConvertTo(TimerWord t, Unit unit); Unit m_timerUnit; // HPUX workaround: m_unit is a system macro on HPUX bool m_stuckAtZero, m_started; TimerWord m_start, m_last;};//! measure CPU time spent executing instructions of this thread (if supported by OS)/*! /note This only works correctly on Windows NT or later. On Unix it reports process time, and others wall clock time.*/class ThreadUserTimer : public TimerBase{public: ThreadUserTimer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {} TimerWord GetCurrentTimerValue(); TimerWord TicksPerSecond();};//! high resolution timerclass CRYPTOPP_DLL Timer : public TimerBase{public: Timer(Unit unit = TimerBase::SECONDS, bool stuckAtZero = false) : TimerBase(unit, stuckAtZero) {} TimerWord GetCurrentTimerValue(); TimerWord TicksPerSecond();};NAMESPACE_END#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -