diff options
| author | Fabrice <fabrice@schaub-dev.xyz> | 2026-04-13 10:23:24 +0200 |
|---|---|---|
| committer | Fabrice <fabrice@schaub-dev.xyz> | 2026-04-13 11:31:27 +0200 |
| commit | 57da910f0f257f47b7d07739b231da1d502a4096 (patch) | |
| tree | da5237bec411be2ecda0867556c0b544e2d4bc89 /benches/CMakeLists.txt | |
| parent | 86da0af02dde3fa4600071593a73b1b9a267fb9a (diff) | |
benchmarks
adding unordered_map vs. cheesemap bench
adds tidwall's hashmap
adds abseil bench
plotting the results
Diffstat (limited to 'benches/CMakeLists.txt')
| -rw-r--r-- | benches/CMakeLists.txt | 55 |
1 files changed, 55 insertions, 0 deletions
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 + $<$<BOOL:${CM_ENABLE_NATIVE}>:-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) |
