Home | History | Annotate | Download | only in test
      1 
      2 #include "benchmark/benchmark_api.h"
      3 
      4 #define BASIC_BENCHMARK_TEST(x) \
      5     BENCHMARK(x)->Arg(8)->Arg(512)->Arg(8192)
      6 
      7 void BM_empty(benchmark::State& state) {
      8   while (state.KeepRunning()) {
      9     benchmark::DoNotOptimize(state.iterations());
     10   }
     11 }
     12 BENCHMARK(BM_empty);
     13 BENCHMARK(BM_empty)->ThreadPerCpu();
     14 
     15 void BM_spin_empty(benchmark::State& state) {
     16   while (state.KeepRunning()) {
     17     for (int x = 0; x < state.range_x(); ++x) {
     18       benchmark::DoNotOptimize(x);
     19     }
     20   }
     21 }
     22 BASIC_BENCHMARK_TEST(BM_spin_empty);
     23 BASIC_BENCHMARK_TEST(BM_spin_empty)->ThreadPerCpu();
     24 
     25 void BM_spin_pause_before(benchmark::State& state) {
     26   for (int i = 0; i < state.range_x(); ++i) {
     27     benchmark::DoNotOptimize(i);
     28   }
     29   while(state.KeepRunning()) {
     30     for (int i = 0; i < state.range_x(); ++i) {
     31       benchmark::DoNotOptimize(i);
     32     }
     33   }
     34 }
     35 BASIC_BENCHMARK_TEST(BM_spin_pause_before);
     36 BASIC_BENCHMARK_TEST(BM_spin_pause_before)->ThreadPerCpu();
     37 
     38 
     39 void BM_spin_pause_during(benchmark::State& state) {
     40   while(state.KeepRunning()) {
     41     state.PauseTiming();
     42     for (int i = 0; i < state.range_x(); ++i) {
     43       benchmark::DoNotOptimize(i);
     44     }
     45     state.ResumeTiming();
     46     for (int i = 0; i < state.range_x(); ++i) {
     47       benchmark::DoNotOptimize(i);
     48     }
     49   }
     50 }
     51 BASIC_BENCHMARK_TEST(BM_spin_pause_during);
     52 BASIC_BENCHMARK_TEST(BM_spin_pause_during)->ThreadPerCpu();
     53 
     54 void BM_pause_during(benchmark::State& state) {
     55   while(state.KeepRunning()) {
     56     state.PauseTiming();
     57     state.ResumeTiming();
     58   }
     59 }
     60 BENCHMARK(BM_pause_during);
     61 BENCHMARK(BM_pause_during)->ThreadPerCpu();
     62 BENCHMARK(BM_pause_during)->UseRealTime();
     63 BENCHMARK(BM_pause_during)->UseRealTime()->ThreadPerCpu();
     64 
     65 void BM_spin_pause_after(benchmark::State& state) {
     66   while(state.KeepRunning()) {
     67     for (int i = 0; i < state.range_x(); ++i) {
     68       benchmark::DoNotOptimize(i);
     69     }
     70   }
     71   for (int i = 0; i < state.range_x(); ++i) {
     72     benchmark::DoNotOptimize(i);
     73   }
     74 }
     75 BASIC_BENCHMARK_TEST(BM_spin_pause_after);
     76 BASIC_BENCHMARK_TEST(BM_spin_pause_after)->ThreadPerCpu();
     77 
     78 
     79 void BM_spin_pause_before_and_after(benchmark::State& state) {
     80   for (int i = 0; i < state.range_x(); ++i) {
     81     benchmark::DoNotOptimize(i);
     82   }
     83   while(state.KeepRunning()) {
     84     for (int i = 0; i < state.range_x(); ++i) {
     85       benchmark::DoNotOptimize(i);
     86     }
     87   }
     88   for (int i = 0; i < state.range_x(); ++i) {
     89     benchmark::DoNotOptimize(i);
     90   }
     91 }
     92 BASIC_BENCHMARK_TEST(BM_spin_pause_before_and_after);
     93 BASIC_BENCHMARK_TEST(BM_spin_pause_before_and_after)->ThreadPerCpu();
     94 
     95 
     96 void BM_empty_stop_start(benchmark::State& state) {
     97   while (state.KeepRunning()) { }
     98 }
     99 BENCHMARK(BM_empty_stop_start);
    100 BENCHMARK(BM_empty_stop_start)->ThreadPerCpu();
    101 
    102 BENCHMARK_MAIN()
    103