15 #ifndef HIGHWAY_HWY_NANOBENCHMARK_H_
16 #define HIGHWAY_HWY_NANOBENCHMARK_H_
52 #ifndef NANOBENCHMARK_ENABLE_CHECKS
53 #define NANOBENCHMARK_ENABLE_CHECKS 0
56 #define NANOBENCHMARK_CHECK_ALWAYS(condition) \
57 while (!(condition)) { \
58 fprintf(stderr, "Nanobenchmark check failed at line %d\n", __LINE__); \
62 #if NANOBENCHMARK_ENABLE_CHECKS
63 #define NANOBENCHMARK_CHECK(condition) NANOBENCHMARK_CHECK_ALWAYS(condition)
65 #define NANOBENCHMARK_CHECK(condition)
168 const size_t num_inputs,
Result* results,
172 template <
class Closure>
179 template <
class Closure>
182 const size_t num_inputs,
Result* results,
184 return Measure(
reinterpret_cast<Func>(&CallClosure<Closure>),
185 reinterpret_cast<const uint8_t*
>(&closure), inputs, num_inputs,
Definition: aligned_allocator.h:23
static FuncOutput CallClosure(const Closure *f, const FuncInput input)
Definition: nanobenchmark.h:173
FuncOutput(*)(const void *, FuncInput) Func
Definition: nanobenchmark.h:102
size_t FuncInput
Definition: nanobenchmark.h:94
size_t Measure(const Func func, const uint8_t *arg, const FuncInput *inputs, const size_t num_inputs, Result *results, const Params &p=Params())
uint64_t FuncOutput
Definition: nanobenchmark.h:97
static size_t MeasureClosure(const Closure &closure, const FuncInput *inputs, const size_t num_inputs, Result *results, const Params &p=Params())
Definition: nanobenchmark.h:180
Definition: nanobenchmark.h:105
size_t subset_ratio
Definition: nanobenchmark.h:118
size_t precision_divisor
Definition: nanobenchmark.h:113
bool verbose
Definition: nanobenchmark.h:141
size_t min_mode_samples
Definition: nanobenchmark.h:131
static constexpr size_t kTimerSamples
Definition: nanobenchmark.h:109
size_t max_evals
Definition: nanobenchmark.h:138
double target_rel_mad
Definition: nanobenchmark.h:134
size_t min_samples_per_eval
Definition: nanobenchmark.h:126
double seconds_per_eval
Definition: nanobenchmark.h:123
Definition: nanobenchmark.h:145
float ticks
Definition: nanobenchmark.h:149
float variability
Definition: nanobenchmark.h:152
FuncInput input
Definition: nanobenchmark.h:146