From 5e3e6ff71a314b0a0ca569d6a7726757a39e9434 Mon Sep 17 00:00:00 2001 From: Hauke Heibel Date: Tue, 20 Oct 2009 22:08:13 +0200 Subject: [PATCH] Added Windows support to the BenchTimer. --- bench/BenchTimer.h | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/bench/BenchTimer.h b/bench/BenchTimer.h index bfc3a99b3..c1f473597 100644 --- a/bench/BenchTimer.h +++ b/bench/BenchTimer.h @@ -26,8 +26,14 @@ #ifndef EIGEN_BENCH_TIMER_H #define EIGEN_BENCH_TIMER_H +#ifndef WIN32 #include #include +#else +#define NOMINMAX +#include +#endif + #include #include @@ -40,7 +46,15 @@ class BenchTimer { public: - BenchTimer() { reset(); } + BenchTimer() + { +#ifdef WIN32 + LARGE_INTEGER freq; + QueryPerformanceFrequency(&freq); + m_frequency = (double)freq.QuadPart; +#endif + reset(); + } ~BenchTimer() {} @@ -51,23 +65,35 @@ public: m_best = std::min(m_best, getTime() - m_start); } - /** Return the best elapsed time. + /** Return the best elapsed time in seconds. */ inline double value(void) { - return m_best; + return m_best; } +#ifdef WIN32 + inline double getTime(void) +#else static inline double getTime(void) +#endif { +#ifdef WIN32 + LARGE_INTEGER query_ticks; + QueryPerformanceCounter(&query_ticks); + return query_ticks.QuadPart/m_frequency; +#else struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); return (double)tv.tv_sec + 1.e-6 * (double)tv.tv_usec; +#endif } protected: - +#ifdef WIN32 + double m_frequency; +#endif double m_best, m_start; };