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