| 80 | } |
| 81 | |
| 82 | class Benchmark { |
| 83 | public: |
| 84 | Benchmark(const char* name, void (*fn)(int)); |
| 85 | Benchmark(const char* name, void (*fn)(int, int)); |
| 86 | Benchmark(const char* name, void (*fn)(int, int, int)); |
| 87 | |
| 88 | Benchmark* Arg(int x); |
| 89 | Benchmark* ArgPair(int x, int y); |
| 90 | Benchmark* Range(int lo, int hi); |
| 91 | Benchmark* RangePair(int lo1, int hi1, int lo2, int hi2); |
| 92 | static void Run(const char* pattern); |
| 93 | |
| 94 | private: |
| 95 | string name_; |
| 96 | int num_args_; |
| 97 | std::vector<std::pair<int, int> > args_; |
| 98 | void (*fn0_)(int) = nullptr; |
| 99 | void (*fn1_)(int, int) = nullptr; |
| 100 | void (*fn2_)(int, int, int) = nullptr; |
| 101 | |
| 102 | void Register(); |
| 103 | void Run(int arg1, int arg2, int* run_count, double* run_seconds); |
| 104 | void RunWithFixedIters(int arg1, int arg2, int* run_count, double* run_seconds); |
| 105 | }; |
| 106 | #endif |
| 107 | |
| 108 | void RunBenchmarks(); |
no outgoing calls