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