aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/BenchTimer.h
diff options
context:
space:
mode:
authorGravatar Hauke Heibel <hauke.heibel@gmail.com>2009-10-20 22:08:13 +0200
committerGravatar Hauke Heibel <hauke.heibel@gmail.com>2009-10-20 22:08:13 +0200
commit5e3e6ff71a314b0a0ca569d6a7726757a39e9434 (patch)
tree39d0152dc3ad66d72f8e73cd4af667124bd4da67 /bench/BenchTimer.h
parent7b0c4102facc9b5f6ca99ef76febb05a9499b8b0 (diff)
Added Windows support to the BenchTimer.
Diffstat (limited to 'bench/BenchTimer.h')
-rw-r--r--bench/BenchTimer.h34
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;
};