xref: /third_party/benchmark/test/fixture_test.cc (revision a8c51b3f)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/benchmark/test/
1
2#include <cassert>
3#include <memory>
4
5#include "benchmark/benchmark.h"
6
7#define FIXTURE_BECHMARK_NAME MyFixture
8
9class FIXTURE_BECHMARK_NAME : public ::benchmark::Fixture {
10 public:
11  void SetUp(const ::benchmark::State& state) override {
12    if (state.thread_index() == 0) {
13      assert(data.get() == nullptr);
14      data.reset(new int(42));
15    }
16  }
17
18  void TearDown(const ::benchmark::State& state) override {
19    if (state.thread_index() == 0) {
20      assert(data.get() != nullptr);
21      data.reset();
22    }
23  }
24
25  ~FIXTURE_BECHMARK_NAME() override { assert(data == nullptr); }
26
27  std::unique_ptr<int> data;
28};
29
30BENCHMARK_F(FIXTURE_BECHMARK_NAME, Foo)(benchmark::State& st) {
31  assert(data.get() != nullptr);
32  assert(*data == 42);
33  for (auto _ : st) {
34  }
35}
36
37BENCHMARK_DEFINE_F(FIXTURE_BECHMARK_NAME, Bar)(benchmark::State& st) {
38  if (st.thread_index() == 0) {
39    assert(data.get() != nullptr);
40    assert(*data == 42);
41  }
42  for (auto _ : st) {
43    assert(data.get() != nullptr);
44    assert(*data == 42);
45  }
46  st.SetItemsProcessed(st.range(0));
47}
48BENCHMARK_REGISTER_F(FIXTURE_BECHMARK_NAME, Bar)->Arg(42);
49BENCHMARK_REGISTER_F(FIXTURE_BECHMARK_NAME, Bar)->Arg(42)->ThreadPerCpu();
50
51BENCHMARK_MAIN();
52

Indexes created Thu Nov 07 10:32:03 CST 2024