From 451efca294ca8065e8f6de9a8796fb728a4df76c Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Wed, 2 Sep 2015 16:34:22 +1000 Subject: [PATCH] microbench/util.c: Win32 support --- microbench/util.c | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/microbench/util.c b/microbench/util.c index b54305ce..cf19d234 100644 --- a/microbench/util.c +++ b/microbench/util.c @@ -29,14 +29,47 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include +#include "util.h" + +#if defined _WIN32 + +#include + +static double +counter_diff (const LARGE_INTEGER * start, const LARGE_INTEGER * end) +{ + LARGE_INTEGER diff, freq; + + QueryPerformanceFrequency(&freq); + diff.QuadPart = end->QuadPart - start->QuadPart; + + return (double)diff.QuadPart/(double)freq.QuadPart; +} + +double +benchmark_function (void (*testfunc) (void), unsigned count) +{ + LARGE_INTEGER start, end; + unsigned k; + + QueryPerformanceCounter (&start) ; + + for (k = 0 ; k < count ; k++) + testfunc(); + + QueryPerformanceCounter (&end) ; + + return counter_diff (&start, &end) / count ; +} /* benchmark_function */ + +#else + #define _GNU_SOURCE -#include #include #include -#include "util.h" - static double timespec_diff (const struct timespec * start, const struct timespec * end) { struct timespec difftime; @@ -68,6 +101,8 @@ benchmark_function (void (*testfunc) (void), unsigned count) return timespec_diff (&start, &end) / count ; } /* benchmark_function */ +#endif + static int double_cmp (const void * a, const void * b) { const double * pa = (double *) a ;