summaryrefslogtreecommitdiffstats
path: root/lib/libcxx/benchmarks/unordered_set_operations.bench.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2016-09-03 18:39:32 +0000
committerpatrick <patrick@openbsd.org>2016-09-03 18:39:32 +0000
commitfe1ccca2776129541f1c4f645e4d1de89a22a031 (patch)
tree8e4fd7a09a5a15a9498fd2d88dcddbd40e999c79 /lib/libcxx/benchmarks/unordered_set_operations.bench.cpp
parentFixed missing null check in switchctl.c (diff)
downloadwireguard-openbsd-fe1ccca2776129541f1c4f645e4d1de89a22a031.tar.xz
wireguard-openbsd-fe1ccca2776129541f1c4f645e4d1de89a22a031.zip
Import libc++ 3.9.0
Diffstat (limited to 'lib/libcxx/benchmarks/unordered_set_operations.bench.cpp')
-rw-r--r--lib/libcxx/benchmarks/unordered_set_operations.bench.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/libcxx/benchmarks/unordered_set_operations.bench.cpp b/lib/libcxx/benchmarks/unordered_set_operations.bench.cpp
new file mode 100644
index 00000000000..c9ee689f69d
--- /dev/null
+++ b/lib/libcxx/benchmarks/unordered_set_operations.bench.cpp
@@ -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()