#include #include #include #include "benchmark/benchmark_api.h" template std::vector getInputs(size_t N) { std::vector inputs; for (size_t i=0; i < N; ++i) { inputs.push_back(i); } return inputs; } template void BM_SetInsert(benchmark::State& st, Container c, Inputs const& in) { const auto end = in.end(); while (st.KeepRunning()) { c.clear(); for (auto it = in.begin(); it != end; ++it) { benchmark::DoNotOptimize(c.insert(*it)); } benchmark::DoNotOptimize(c); } } BENCHMARK_CAPTURE(BM_SetInsert, uint32_insert, std::unordered_set{}, getInputs(1024)); template void BM_SetFind(benchmark::State& st, Container c, Inputs const& in) { c.insert(in.begin(), in.end()); const auto end = in.end(); while (st.KeepRunning()) { for (auto it = in.begin(); it != end; ++it) { benchmark::DoNotOptimize(c.find(*it)); } } } BENCHMARK_CAPTURE(BM_SetFind, uint32_lookup, std::unordered_set{}, getInputs(1024)); BENCHMARK_MAIN()