r3/tests/bench.h

69 lines
1.3 KiB
C
Raw Normal View History

2014-05-16 19:48:22 -04:00
/*
* bench.h
* Copyright (C) 2014 c9s <c9s@c9smba.local>
*
* Distributed under terms of the MIT license.
*/
#ifndef BENCH_H
#define BENCH_H
#include <stdlib.h>
#define MICRO_IN_SEC 1000000.00
#define SEC_IN_MIN 60
#define NUL '\0'
typedef struct {
long N; // N for each run
long R; // runs
double secs;
double start;
double end;
} bench;
unsigned long unixtime();
2014-05-16 19:48:22 -04:00
double microtime();
void bench_start(bench *b);
void bench_stop(bench *b);
double bench_iteration_speed(bench *b);
2014-05-16 19:48:57 -04:00
void bench_print_summary(bench *b);
2014-05-16 19:48:22 -04:00
double bench_duration(bench *b);
void bench_append_csv(char *filename, int countOfB, ...);
2014-05-22 09:55:41 -04:00
#define MEASURE(B) \
bench B; B.N = 1; B.R = 1; \
printf("Measuring " #B "...\n"); \
bench_start(&B);
#define END_MEASURE(B) \
bench_stop(&B);
#define BENCHMARK(B) \
bench B; B.N = 5000000; B.R = 3; \
2014-05-22 09:01:25 -04:00
printf("Benchmarking " #B "...\n"); \
bench_start(&B); \
for (int _r = 0; _r < B.R ; _r++ ) { \
for (int _i = 0; _i < B.N ; _i++ ) {
#define END_BENCHMARK(B) \
} \
} \
bench_stop(&B);
#define BENCHMARK_SUMMARY(B) bench_print_summary(&B);
2014-05-22 09:01:25 -04:00
#define BENCHMARK_RECORD_CSV(filename, countOfB, ...) \
bench_append_csv(filename, countOfB, __VA_ARGS__)
2014-05-22 09:55:41 -04:00
#define BR(b) &b
2014-05-16 19:48:22 -04:00
#endif /* !BENCH_H */