50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
| 
 | |
| #include "benchmark/benchmark.h"
 | |
| 
 | |
| #include <cassert>
 | |
| #include <memory>
 | |
| 
 | |
| class MyFixture : public ::benchmark::Fixture {
 | |
|  public:
 | |
|   void SetUp(const ::benchmark::State& state) {
 | |
|     if (state.thread_index == 0) {
 | |
|       assert(data.get() == nullptr);
 | |
|       data.reset(new int(42));
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   void TearDown(const ::benchmark::State& state) {
 | |
|     if (state.thread_index == 0) {
 | |
|       assert(data.get() != nullptr);
 | |
|       data.reset();
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   ~MyFixture() { assert(data == nullptr); }
 | |
| 
 | |
|   std::unique_ptr<int> data;
 | |
| };
 | |
| 
 | |
| BENCHMARK_F(MyFixture, Foo)(benchmark::State &st) {
 | |
|   assert(data.get() != nullptr);
 | |
|   assert(*data == 42);
 | |
|   while (st.KeepRunning()) {
 | |
|   }
 | |
| }
 | |
| 
 | |
| BENCHMARK_DEFINE_F(MyFixture, Bar)(benchmark::State& st) {
 | |
|   if (st.thread_index == 0) {
 | |
|     assert(data.get() != nullptr);
 | |
|     assert(*data == 42);
 | |
|   }
 | |
|   while (st.KeepRunning()) {
 | |
|     assert(data.get() != nullptr);
 | |
|     assert(*data == 42);
 | |
|   }
 | |
|   st.SetItemsProcessed(st.range(0));
 | |
| }
 | |
| BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42);
 | |
| BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42)->ThreadPerCpu();
 | |
| 
 | |
| BENCHMARK_MAIN()
 |