16 #ifndef HIGHWAY_HWY_NANOBENCHMARK_H_
17 #define HIGHWAY_HWY_NANOBENCHMARK_H_
55 #ifndef NANOBENCHMARK_ENABLE_CHECKS
56 #define NANOBENCHMARK_ENABLE_CHECKS 0
59 #define NANOBENCHMARK_CHECK_ALWAYS(condition) \
60 while (!(condition)) { \
61 fprintf(stderr, "Nanobenchmark check failed at line %d\n", __LINE__); \
65 #if NANOBENCHMARK_ENABLE_CHECKS
66 #define NANOBENCHMARK_CHECK(condition) NANOBENCHMARK_CHECK_ALWAYS(condition)
68 #define NANOBENCHMARK_CHECK(condition)
171 const FuncInput* inputs,
const size_t num_inputs,
175 template <
class Closure>
182 template <
class Closure>
185 const size_t num_inputs,
Result* results,
187 return Measure(
reinterpret_cast<Func>(&CallClosure<Closure>),
188 reinterpret_cast<const uint8_t*
>(&closure), inputs, num_inputs,
#define HWY_DLLEXPORT
Definition: highway_export.h:13
Definition: aligned_allocator.h:27
static FuncOutput CallClosure(const Closure *f, const FuncInput input)
Definition: nanobenchmark.h:176
FuncOutput(*)(const void *, FuncInput) Func
Definition: nanobenchmark.h:105
size_t FuncInput
Definition: nanobenchmark.h:97
uint64_t FuncOutput
Definition: nanobenchmark.h:100
HWY_DLLEXPORT size_t Measure(const Func func, const uint8_t *arg, const FuncInput *inputs, const size_t num_inputs, Result *results, const Params &p=Params())
static size_t MeasureClosure(const Closure &closure, const FuncInput *inputs, const size_t num_inputs, Result *results, const Params &p=Params())
Definition: nanobenchmark.h:183
HWY_DLLEXPORT int Unpredictable1()
Definition: nanobenchmark.h:108
size_t subset_ratio
Definition: nanobenchmark.h:121
size_t precision_divisor
Definition: nanobenchmark.h:116
bool verbose
Definition: nanobenchmark.h:144
size_t min_mode_samples
Definition: nanobenchmark.h:134
static constexpr size_t kTimerSamples
Definition: nanobenchmark.h:112
size_t max_evals
Definition: nanobenchmark.h:141
double target_rel_mad
Definition: nanobenchmark.h:137
size_t min_samples_per_eval
Definition: nanobenchmark.h:129
double seconds_per_eval
Definition: nanobenchmark.h:126
Definition: nanobenchmark.h:148
float ticks
Definition: nanobenchmark.h:152
float variability
Definition: nanobenchmark.h:155
FuncInput input
Definition: nanobenchmark.h:149