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/CMakeLists.txt | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 benches/CMakeLists.txt (limited to 'benches/CMakeLists.txt') diff --git a/benches/CMakeLists.txt b/benches/CMakeLists.txt new file mode 100644 index 0000000..d096f4b --- /dev/null +++ b/benches/CMakeLists.txt @@ -0,0 +1,55 @@ +set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "" FORCE) +set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) +set(BENCHMARK_USE_BUNDLED_GTEST OFF CACHE BOOL "" FORCE) + +add_subdirectory("${cm_benchesdir}/gbench" EXCLUDE_FROM_ALL) + +set(ABSL_PROPAGATE_CXX_STD ON CACHE BOOL "" FORCE) +set(ABSL_BUILD_TESTING OFF CACHE BOOL "" FORCE) +add_subdirectory("${cm_benchesdir}/abseil" EXCLUDE_FROM_ALL) + +set(cm_bench_targets + cheesemap_bench + tidwall_bench + unordered_map_bench + abseil_bench +) + +foreach(target_name IN LISTS cm_bench_targets) + add_executable(${target_name} "${cm_benchesdir}/${target_name}.cpp") + + target_include_directories(${target_name} + PRIVATE + "${cm_topdir}" + "${cm_benchesdir}" + ) + + target_compile_options(${target_name} + PRIVATE + -Wall -Wextra -Werror + $<$:-march=native> + ) + + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + target_compile_options(${target_name} PRIVATE -O3) + endif() + + target_link_libraries(${target_name} + PRIVATE + benchmark::benchmark_main + ) + + set_target_properties(${target_name} PROPERTIES + CXX_STANDARD 20 + CXX_STANDARD_REQUIRED ON + CXX_EXTENSIONS ON + ) +endforeach() + +target_link_libraries(cheesemap_bench PRIVATE cheesemap) + +set(cm_tidwalldir "${cm_benchesdir}/tidwall") +target_include_directories(tidwall_bench PRIVATE "${cm_tidwalldir}") +target_sources(tidwall_bench PRIVATE "${cm_tidwalldir}/hashmap.c") + +target_link_libraries(abseil_bench PRIVATE absl::flat_hash_map) -- cgit v1.2.3