blob: 3435415447f47e51cf2c3a62146b5740b9542d08 [file] [log] [blame]
Eric Fiselierb08d8b12016-07-19 23:07:03 +00001
2#include "benchmark/benchmark_api.h"
3
4#define BASIC_BENCHMARK_TEST(x) \
5 BENCHMARK(x)->Arg(8)->Arg(512)->Arg(8192)
6
7void BM_empty(benchmark::State& state) {
8 while (state.KeepRunning()) {
9 benchmark::DoNotOptimize(state.iterations());
10 }
11}
12BENCHMARK(BM_empty);
13BENCHMARK(BM_empty)->ThreadPerCpu();
14
15void 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}
22BASIC_BENCHMARK_TEST(BM_spin_empty);
23BASIC_BENCHMARK_TEST(BM_spin_empty)->ThreadPerCpu();
24
25void 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}
35BASIC_BENCHMARK_TEST(BM_spin_pause_before);
36BASIC_BENCHMARK_TEST(BM_spin_pause_before)->ThreadPerCpu();
37
38
39void 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}
51BASIC_BENCHMARK_TEST(BM_spin_pause_during);
52BASIC_BENCHMARK_TEST(BM_spin_pause_during)->ThreadPerCpu();
53
54void BM_pause_during(benchmark::State& state) {
55 while(state.KeepRunning()) {
56 state.PauseTiming();
57 state.ResumeTiming();
58 }
59}
60BENCHMARK(BM_pause_during);
61BENCHMARK(BM_pause_during)->ThreadPerCpu();
62BENCHMARK(BM_pause_during)->UseRealTime();
63BENCHMARK(BM_pause_during)->UseRealTime()->ThreadPerCpu();
64
65void 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}
75BASIC_BENCHMARK_TEST(BM_spin_pause_after);
76BASIC_BENCHMARK_TEST(BM_spin_pause_after)->ThreadPerCpu();
77
78
79void 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}
92BASIC_BENCHMARK_TEST(BM_spin_pause_before_and_after);
93BASIC_BENCHMARK_TEST(BM_spin_pause_before_and_after)->ThreadPerCpu();
94
95
96void BM_empty_stop_start(benchmark::State& state) {
97 while (state.KeepRunning()) { }
98}
99BENCHMARK(BM_empty_stop_start);
100BENCHMARK(BM_empty_stop_start)->ThreadPerCpu();
101
102BENCHMARK_MAIN()