third_party/benchmark/test/map_test.cc
Go to the documentation of this file.
1 #include "benchmark/benchmark.h"
2 
3 #include <cstdlib>
4 #include <map>
5 
6 namespace {
7 
8 std::map<int, int> ConstructRandomMap(int size) {
9  std::map<int, int> m;
10  for (int i = 0; i < size; ++i) {
11  m.insert(std::make_pair(rand() % size, rand() % size));
12  }
13  return m;
14 }
15 
16 } // namespace
17 
18 // Basic version.
19 static void BM_MapLookup(benchmark::State& state) {
20  const int size = state.range(0);
21  while (state.KeepRunning()) {
22  state.PauseTiming();
23  std::map<int, int> m = ConstructRandomMap(size);
24  state.ResumeTiming();
25  for (int i = 0; i < size; ++i) {
26  benchmark::DoNotOptimize(m.find(rand() % size));
27  }
28  }
29  state.SetItemsProcessed(state.iterations() * size);
30 }
31 BENCHMARK(BM_MapLookup)->Range(1 << 3, 1 << 12);
32 
33 // Using fixtures.
35  public:
36  void SetUp(const ::benchmark::State& st) {
37  m = ConstructRandomMap(st.range(0));
38  }
39 
40  void TearDown(const ::benchmark::State&) { m.clear(); }
41 
42  std::map<int, int> m;
43 };
44 
46  const int size = state.range(0);
47  while (state.KeepRunning()) {
48  for (int i = 0; i < size; ++i) {
49  benchmark::DoNotOptimize(m.find(rand() % size));
50  }
51  }
52  state.SetItemsProcessed(state.iterations() * size);
53 }
54 BENCHMARK_REGISTER_F(MapFixture, Lookup)->Range(1 << 3, 1 << 12);
55 
BENCHMARK_REGISTER_F
BENCHMARK_REGISTER_F(MapFixture, Lookup) -> Range(1<< 3, 1<< 12)
BENCHMARK
BENCHMARK(BM_MapLookup) -> Range(1<< 3, 1<< 12)
benchmark::DoNotOptimize
BENCHMARK_ALWAYS_INLINE void DoNotOptimize(Tp const &value)
Definition: benchmark.h:328
benchmark::State::PauseTiming
void PauseTiming()
Definition: benchmark.cc:420
benchmark::Fixture
Definition: benchmark.h:850
BENCHMARK_DEFINE_F
BENCHMARK_DEFINE_F(MapFixture, Lookup)(benchmark
Definition: third_party/benchmark/test/map_test.cc:45
BENCHMARK_MAIN
#define BENCHMARK_MAIN()
Definition: benchmark.h:988
MapFixture
Definition: third_party/benchmark/test/map_test.cc:34
benchmark::State::iterations
BENCHMARK_ALWAYS_INLINE size_t iterations() const
Definition: benchmark.h:535
size
#define size
Definition: glcorearb.h:2944
benchmark::State::KeepRunning
bool KeepRunning()
Definition: benchmark.h:404
MapFixture::TearDown
void TearDown(const ::benchmark::State &)
Definition: third_party/benchmark/test/map_test.cc:40
i
int i
Definition: gmock-matchers_test.cc:764
benchmark::State::range
BENCHMARK_ALWAYS_INLINE int range(std::size_t pos=0) const
Definition: benchmark.h:523
MapFixture::SetUp
void SetUp(const ::benchmark::State &st)
Definition: third_party/benchmark/test/map_test.cc:36
benchmark::State
Definition: benchmark.h:399
size
GLsizeiptr size
Definition: glcorearb.h:2943
m
const upb_json_parsermethod * m
Definition: ruby/ext/google/protobuf_c/upb.h:10501
benchmark::State::SetItemsProcessed
BENCHMARK_ALWAYS_INLINE void SetItemsProcessed(size_t items)
Definition: benchmark.h:498
MapFixture::m
std::map< int, int > m
Definition: third_party/benchmark/test/map_test.cc:42
benchmark::State::ResumeTiming
void ResumeTiming()
Definition: benchmark.cc:426
BM_MapLookup
static void BM_MapLookup(benchmark::State &state)
Definition: third_party/benchmark/test/map_test.cc:19
benchmark.h


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:56