From b21162cf8e06f40baa1f58be6a8c17435cebc34d Mon Sep 17 00:00:00 2001 From: weidai Date: Fri, 4 Oct 2002 17:31:41 +0000 Subject: Initial revision git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@2 57ff6487-cd31-0410-9ec3-f628ee90f5f0 --- hrtimer.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 hrtimer.h (limited to 'hrtimer.h') diff --git a/hrtimer.h b/hrtimer.h new file mode 100644 index 0000000..81d9fcd --- /dev/null +++ b/hrtimer.h @@ -0,0 +1,43 @@ +#ifndef CRYPTOPP_HRTIMER_H +#define CRYPTOPP_HRTIMER_H + +#include "config.h" + +NAMESPACE_BEGIN(CryptoPP) + +#ifdef HIGHRES_TIMER_AVAILABLE + +//! high resolution timer +class Timer +{ +public: + enum Unit {SECONDS, MILLISECONDS, MICROSECONDS}; + Timer(Unit unit, bool stuckAtZero = false) : m_timerUnit(unit), m_stuckAtZero(stuckAtZero), m_started(false) {} + + static word64 GetCurrentTimerValue(); // GetCurrentTime is a macro in MSVC 6.0 + static unsigned long ConvertTo(word64 t, Unit unit); + + // this is not the resolution, just a conversion factor into milliseconds + static inline unsigned int TicksPerMillisecond() + { +#if defined(CRYPTOPP_WIN32_AVAILABLE) + return 10000; +#elif defined(__unix__) || defined(macintosh) + return 1000; +#endif + } + + void StartTimer(); + unsigned long ElapsedTime(); + +private: + Unit m_timerUnit; // HPUX workaround: m_unit is a system macro on HPUX + bool m_stuckAtZero, m_started; + word64 m_start; +}; + +#endif + +NAMESPACE_END + +#endif -- cgit v1.2.1