microbench/util.c: Win32 support
This commit is contained in:
parent
98cab352a0
commit
451efca294
@ -29,14 +29,47 @@
|
|||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
#if defined _WIN32
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
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
|
#define _GNU_SOURCE
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
#include "util.h"
|
|
||||||
|
|
||||||
static double
|
static double
|
||||||
timespec_diff (const struct timespec * start, const struct timespec * end)
|
timespec_diff (const struct timespec * start, const struct timespec * end)
|
||||||
{ struct timespec difftime;
|
{ struct timespec difftime;
|
||||||
@ -68,6 +101,8 @@ benchmark_function (void (*testfunc) (void), unsigned count)
|
|||||||
return timespec_diff (&start, &end) / count ;
|
return timespec_diff (&start, &end) / count ;
|
||||||
} /* benchmark_function */
|
} /* benchmark_function */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
double_cmp (const void * a, const void * b)
|
double_cmp (const void * a, const void * b)
|
||||||
{ const double * pa = (double *) a ;
|
{ const double * pa = (double *) a ;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user