diff options
author | Hauke Heibel <hauke.heibel@gmail.com> | 2009-10-20 22:08:13 +0200 |
---|---|---|
committer | Hauke Heibel <hauke.heibel@gmail.com> | 2009-10-20 22:08:13 +0200 |
commit | 5e3e6ff71a314b0a0ca569d6a7726757a39e9434 (patch) | |
tree | 39d0152dc3ad66d72f8e73cd4af667124bd4da67 /bench/BenchTimer.h | |
parent | 7b0c4102facc9b5f6ca99ef76febb05a9499b8b0 (diff) |
Added Windows support to the BenchTimer.
Diffstat (limited to 'bench/BenchTimer.h')
-rw-r--r-- | bench/BenchTimer.h | 34 |
1 files 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 <sys/time.h> #include <unistd.h> +#else +#define NOMINMAX +#include <windows.h> +#endif + #include <cstdlib> #include <numeric> @@ -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; }; |