From 57da910f0f257f47b7d07739b231da1d502a4096 Mon Sep 17 00:00:00 2001 From: Fabrice Date: Mon, 13 Apr 2026 10:23:24 +0200 Subject: benchmarks adding unordered_map vs. cheesemap bench adds tidwall's hashmap adds abseil bench plotting the results --- benches/unordered_map_bench.cpp | 87 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 benches/unordered_map_bench.cpp (limited to 'benches/unordered_map_bench.cpp') diff --git a/benches/unordered_map_bench.cpp b/benches/unordered_map_bench.cpp new file mode 100644 index 0000000..a064ebc --- /dev/null +++ b/benches/unordered_map_bench.cpp @@ -0,0 +1,87 @@ +#include + +#include "bench_common.hpp" + +namespace { + +using namespace cmbench; + +static void BM_Insert_Scalar(benchmark::State& state) { + bench_insert>( + state, scalar_workload(), + {"std::unordered_map", "c++", "Scalar", "Insert"}); +} +static void BM_LookupHit_Scalar(benchmark::State& state) { + bench_lookup_hit>( + state, scalar_workload(), + {"std::unordered_map", "c++", "Scalar", "LookupHit"}); +} +static void BM_LookupMiss_Scalar(benchmark::State& state) { + bench_lookup_miss>( + state, scalar_workload(), + {"std::unordered_map", "c++", "Scalar", "LookupMiss"}); +} +static void BM_Erase_Scalar(benchmark::State& state) { + bench_erase>( + state, scalar_workload(), + {"std::unordered_map", "c++", "Scalar", "Erase"}); +} + +static void BM_Insert_HandlePayload(benchmark::State& state) { + bench_insert>( + state, entity_workload(), + {"std::unordered_map", "c++", "HandlePayload", "Insert"}); +} +static void BM_LookupHit_HandlePayload(benchmark::State& state) { + bench_lookup_hit>( + state, entity_workload(), + {"std::unordered_map", "c++", "HandlePayload", "LookupHit"}); +} +static void BM_LookupMiss_HandlePayload(benchmark::State& state) { + bench_lookup_miss>( + state, entity_workload(), + {"std::unordered_map", "c++", "HandlePayload", "LookupMiss"}); +} +static void BM_Erase_HandlePayload(benchmark::State& state) { + bench_erase>( + state, entity_workload(), + {"std::unordered_map", "c++", "HandlePayload", "Erase"}); +} + +static void BM_Insert_CompositeKey(benchmark::State& state) { + bench_insert>( + state, component_workload(), + {"std::unordered_map", "c++", "CompositeKey", "Insert"}); +} +static void BM_LookupHit_CompositeKey(benchmark::State& state) { + bench_lookup_hit>( + state, component_workload(), + {"std::unordered_map", "c++", "CompositeKey", "LookupHit"}); +} +static void BM_LookupMiss_CompositeKey(benchmark::State& state) { + bench_lookup_miss>( + state, component_workload(), + {"std::unordered_map", "c++", "CompositeKey", "LookupMiss"}); +} +static void BM_Erase_CompositeKey(benchmark::State& state) { + bench_erase>( + state, component_workload(), + {"std::unordered_map", "c++", "CompositeKey", "Erase"}); +} + +} // namespace + +BENCHMARK(BM_Insert_Scalar); +BENCHMARK(BM_LookupHit_Scalar); +BENCHMARK(BM_LookupMiss_Scalar); +BENCHMARK(BM_Erase_Scalar); + +BENCHMARK(BM_Insert_HandlePayload); +BENCHMARK(BM_LookupHit_HandlePayload); +BENCHMARK(BM_LookupMiss_HandlePayload); +BENCHMARK(BM_Erase_HandlePayload); + +BENCHMARK(BM_Insert_CompositeKey); +BENCHMARK(BM_LookupHit_CompositeKey); +BENCHMARK(BM_LookupMiss_CompositeKey); +BENCHMARK(BM_Erase_CompositeKey); -- cgit v1.2.3