blob: 570ff226996d2764e0a69219fb82ca0c5061bf8b [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()) {
Eric Fiselierf6e09e52016-08-09 18:56:48 +000017 for (int x = 0; x < state.range(0); ++x) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000018 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) {
Eric Fiselierf6e09e52016-08-09 18:56:48 +000026 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000027 benchmark::DoNotOptimize(i);
28 }
29 while(state.KeepRunning()) {
Eric Fiselierf6e09e52016-08-09 18:56:48 +000030 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000031 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();
Eric Fiselierf6e09e52016-08-09 18:56:48 +000042 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000043 benchmark::DoNotOptimize(i);
44 }
45 state.ResumeTiming();
Eric Fiselierf6e09e52016-08-09 18:56:48 +000046 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000047 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()) {
Eric Fiselierf6e09e52016-08-09 18:56:48 +000067 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000068 benchmark::DoNotOptimize(i);
69 }
70 }
Eric Fiselierf6e09e52016-08-09 18:56:48 +000071 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000072 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) {
Eric Fiselierf6e09e52016-08-09 18:56:48 +000080 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000081 benchmark::DoNotOptimize(i);
82 }
83 while(state.KeepRunning()) {
Eric Fiselierf6e09e52016-08-09 18:56:48 +000084 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000085 benchmark::DoNotOptimize(i);
86 }
87 }
Eric Fiselierf6e09e52016-08-09 18:56:48 +000088 for (int i = 0; i < state.range(0); ++i) {
Eric Fiselierb08d8b12016-07-19 23:07:03 +000089 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()