| #ifndef BENCHMARK_REGISTER_H |
| #define BENCHMARK_REGISTER_H |
| |
| #include <vector> |
| |
| #include "check.h" |
| |
| template <typename T> |
| void AddRange(std::vector<T>* dst, T lo, T hi, int mult) { |
| CHECK_GE(lo, 0); |
| CHECK_GE(hi, lo); |
| CHECK_GE(mult, 2); |
| |
| // Add "lo" |
| dst->push_back(lo); |
| |
| static const T kmax = std::numeric_limits<T>::max(); |
| |
| // Now space out the benchmarks in multiples of "mult" |
| for (T i = 1; i < kmax / mult; i *= mult) { |
| if (i >= hi) break; |
| if (i > lo) { |
| dst->push_back(i); |
| } |
| } |
| |
| // Add "hi" (if different from "lo") |
| if (hi != lo) { |
| dst->push_back(hi); |
| } |
| } |
| |
| #endif // BENCHMARK_REGISTER_H |