1#ifndef BENCHMARK_REGISTER_H 2#define BENCHMARK_REGISTER_H 3 4#include <limits> 5#include <vector> 6 7#include "check.h" 8 9template <typename T> 10void AddRange(std::vector<T>* dst, T lo, T hi, int mult) { 11 CHECK_GE(lo, 0); 12 CHECK_GE(hi, lo); 13 CHECK_GE(mult, 2); 14 15 // Add "lo" 16 dst->push_back(lo); 17 18 static const T kmax = std::numeric_limits<T>::max(); 19 20 // Now space out the benchmarks in multiples of "mult" 21 for (T i = 1; i < kmax / mult; i *= mult) { 22 if (i >= hi) break; 23 if (i > lo) { 24 dst->push_back(i); 25 } 26 } 27 28 // Add "hi" (if different from "lo") 29 if (hi != lo) { 30 dst->push_back(hi); 31 } 32} 33 34#endif // BENCHMARK_REGISTER_H 35