|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <stddef.h> |
|
|
#include <stdint.h> |
|
|
#include <vector> |
|
|
|
|
|
namespace testing { |
|
|
class Benchmark { |
|
|
public: |
|
|
Benchmark(const char* name, void (*fn)(int)) { |
|
|
Register(name, fn, NULL); |
|
|
} |
|
|
Benchmark(const char* name, void (*fn_range)(int, int)) { |
|
|
Register(name, NULL, fn_range); |
|
|
} |
|
|
Benchmark* Arg(int x); |
|
|
Benchmark* Range(int lo, int hi); |
|
|
const char* Name(); |
|
|
bool ShouldRun(int argc, char* argv[]); |
|
|
void Run(); |
|
|
private: |
|
|
const char* name_; |
|
|
void (*fn_)(int); |
|
|
void (*fn_range_)(int, int); |
|
|
std::vector<int> args_; |
|
|
void Register(const char* name, void (*fn)(int), void (*fn_range)(int, int)); |
|
|
void RunRepeatedlyWithArg(int iterations, int arg); |
|
|
void RunWithArg(int arg); |
|
|
}; |
|
|
} |
|
|
void SetBenchmarkFlopsProcessed(int64_t); |
|
|
void StopBenchmarkTiming(); |
|
|
void StartBenchmarkTiming(); |
|
|
#define BENCHMARK(f) \ |
|
|
static ::testing::Benchmark* _benchmark_##f __attribute__((unused)) = \ |
|
|
(new ::testing::Benchmark(#f, f)) |
|
|
|