mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 10:07:41 +08:00
Add unordered_map::insert benchmark test and rename file
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274424 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,29 +0,0 @@
|
|||||||
#include <unordered_set>
|
|
||||||
#include <vector>
|
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
#include "benchmark/benchmark_api.h"
|
|
||||||
|
|
||||||
template <class IntT>
|
|
||||||
std::vector<IntT> getInputs(size_t N) {
|
|
||||||
std::vector<IntT> inputs;
|
|
||||||
for (size_t i=0; i < N; ++i) {
|
|
||||||
inputs.push_back(i);
|
|
||||||
}
|
|
||||||
return inputs;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class Container, class Inputs>
|
|
||||||
void BM_SetLookup(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_SetLookup, uint32_lookup,
|
|
||||||
std::unordered_set<uint32_t>{}, getInputs<uint32_t>(1024));
|
|
||||||
|
|
||||||
BENCHMARK_MAIN()
|
|
44
benchmarks/unordered_set_operations.bench.cpp
Normal file
44
benchmarks/unordered_set_operations.bench.cpp
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#include <unordered_set>
|
||||||
|
#include <vector>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
#include "benchmark/benchmark_api.h"
|
||||||
|
|
||||||
|
template <class IntT>
|
||||||
|
std::vector<IntT> getInputs(size_t N) {
|
||||||
|
std::vector<IntT> inputs;
|
||||||
|
for (size_t i=0; i < N; ++i) {
|
||||||
|
inputs.push_back(i);
|
||||||
|
}
|
||||||
|
return inputs;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Container, class Inputs>
|
||||||
|
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<uint32_t>{}, getInputs<uint32_t>(1024));
|
||||||
|
|
||||||
|
template <class Container, class Inputs>
|
||||||
|
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<uint32_t>{}, getInputs<uint32_t>(1024));
|
||||||
|
|
||||||
|
|
||||||
|
BENCHMARK_MAIN()
|
Reference in New Issue
Block a user