brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · d1093eb Raw
52 lines · plain
1 2#include <cassert>3#include <memory>4 5#include "benchmark/benchmark.h"6 7#define FIXTURE_BECHMARK_NAME MyFixture8 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