Home | History | Annotate | Download | only in test
      1 #undef NDEBUG
      2 #include <cassert>
      3 #include <cstddef>
      4 
      5 #include "benchmark/benchmark.h"
      6 
      7 #if __cplusplus >= 201103L
      8 #error C++11 or greater detected. Should be C++03.
      9 #endif
     10 
     11 void BM_empty(benchmark::State& state) {
     12   while (state.KeepRunning()) {
     13     volatile std::size_t x = state.iterations();
     14     ((void)x);
     15   }
     16 }
     17 BENCHMARK(BM_empty);
     18 
     19 // The new C++11 interface for args/ranges requires initializer list support.
     20 // Therefore we provide the old interface to support C++03.
     21 void BM_old_arg_range_interface(benchmark::State& state) {
     22   assert((state.range(0) == 1 && state.range(1) == 2) ||
     23          (state.range(0) == 5 && state.range(1) == 6));
     24   while (state.KeepRunning()) {
     25   }
     26 }
     27 BENCHMARK(BM_old_arg_range_interface)->ArgPair(1, 2)->RangePair(5, 5, 6, 6);
     28 
     29 template <class T, class U>
     30 void BM_template2(benchmark::State& state) {
     31   BM_empty(state);
     32 }
     33 BENCHMARK_TEMPLATE2(BM_template2, int, long);
     34 
     35 template <class T>
     36 void BM_template1(benchmark::State& state) {
     37   BM_empty(state);
     38 }
     39 BENCHMARK_TEMPLATE(BM_template1, long);
     40 BENCHMARK_TEMPLATE1(BM_template1, int);
     41 
     42 void BM_counters(benchmark::State& state) {
     43     BM_empty(state);
     44     state.counters["Foo"] = 2;
     45 }
     46 BENCHMARK(BM_counters);
     47 
     48 BENCHMARK_MAIN()
     49