21#ifndef __CALF_BENCHMARK_H
22#define __CALF_BENCHMARK_H
26#include <sys/resource.h>
34}; to keep editor happy
54 data =
new double[items];
78#define CLOCK_SPEED (1.6 * 1000.0 * 1000.0 * 1000.0)
81inline uint64_t rdtsc()
83 unsigned long long int x;
84 __asm__
volatile (
".byte 0x0f, 0x31" :
"=A" (
x));
94template<
typename Target,
class Stat>
101 template <
class... ConstrArgs>
110 int priority = getpriority(PRIO_PROCESS, getpid());
112 if (setpriority(PRIO_PROCESS, getpid(), -20) < 0) {
114 fprintf(stderr,
"Warning: could not set process priority, measurements can be worthless\n");
118 for (
int i = 0;
i < runs;
i++) {
122 uint64_t
start = rdtsc();
124 clock_t
start = ::clock();
126 for (
int j = 0;
j < repeats;
j++) {
130 uint64_t end = rdtsc();
133 clock_t end = ::clock();
134 double elapsed = double(end -
start) / (double(CLOCKS_PER_SEC) * repeats *
target.scaler());
140 setpriority(PRIO_PROCESS, getpid(), priority);
156 benchmark.
measure(runs, repeats);
158 printf(
"%-30s: %f/sec, %f/CDsr, value = %f\n",
typeid(T).
name(), 1.0 / stat.
get(), 1.0 / (44100 * stat.
get()), benchmark.
target.result);
163{ to keep editor happy
#define CLOCK_SPEED
Definition benchmark.h:78
Definition benchmark.h:96
Target target
Definition benchmark.h:98
Stat & stat
Definition benchmark.h:99
float get_stat()
Definition benchmark.h:144
void measure(int runs, int repeats)
Definition benchmark.h:108
simple_benchmark(Stat &_stat, ConstrArgs... args)
Definition benchmark.h:102
register unsigned j
Definition inflate.c:1576
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
static PuglViewHint int value
Definition pugl.h:1708
static const char * name
Definition pugl.h:1582
virtual ASIOError start()=0
void do_simple_benchmark(int runs=5, int repeats=50000)
Definition benchmark.h:151
Definition benchmark.h:90
static bool warned
Definition benchmark.h:91