aboutsummaryrefslogtreecommitdiffstats
path: root/benches/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'benches/CMakeLists.txt')
-rw-r--r--benches/CMakeLists.txt55
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)