diff options
author | Vincent Ambo <mail@tazj.in> | 2020-07-15T07·20+0100 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2020-07-15T07·23+0100 |
commit | 1213b086a1015a662ab7ebd658f784534fd3116a (patch) | |
tree | d3bc8f3b7f40b8b60f0ef6fbd649cf765f4fdfb6 /third_party/immer/benchmark/CMakeLists.txt | |
parent | 1390827b9ea1e04bc9863e48930bfd16db3b716e (diff) | |
parent | 7f19d641647ac4ef313ed88d6b5c140983ce5436 (diff) |
merge(3p/immer): Subtree merge at 'ad3e3556d' as 'third_party/immer' r/1299
Change-Id: I9636a41ad44b4218293833fd3e9456d9b07c731b
Diffstat (limited to 'third_party/immer/benchmark/CMakeLists.txt')
-rw-r--r-- | third_party/immer/benchmark/CMakeLists.txt | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/third_party/immer/benchmark/CMakeLists.txt b/third_party/immer/benchmark/CMakeLists.txt new file mode 100644 index 000000000000..0f9061aa3cd3 --- /dev/null +++ b/third_party/immer/benchmark/CMakeLists.txt @@ -0,0 +1,128 @@ + +# Config +# ====== + +option(CHECK_BENCHMARKS "Run benchmarks on check target" off) +option(BENCHMARK_DISABLE_GC "Disable gc during a measurement") + +set(BENCHMARK_PARAM "N:1000" CACHE STRING "Benchmark parameters") +set(BENCHMARK_SAMPLES "20" CACHE STRING "Benchmark samples") + +# Dependencies +# ============ + +find_package(RRB) + +if (NOT RRB_FOUND) + message(STATUS "Disabling benchmarks") + return() +endif() + +# These are expected to be in the include path, the nix-shell +# environment installs them: +# +# https://github.com/marcusz/steady +# https://github.com/deepsea-inria/chunkedseq.git +# https://github.com/rsms/immutable-cpp.git + +# Targets +# ======= + +add_custom_target(benchmarks + COMMENT "Build all benchmarks.") + +execute_process( + COMMAND git log -1 --format=%h + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE immer_git_commit_hash + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process( + COMMAND git status --porcelain + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE immer_git_status + OUTPUT_STRIP_TRAILING_WHITESPACE) + +if (NOT immer_git_status STREQUAL "") + set(immer_git_commit_hash "${immer_git_commit_hash}+") +endif() + +site_name(immer_hostname) + +get_filename_component(immer_compiler_name "${CMAKE_CXX_COMPILER}" NAME) + +set(immer_benchmark_report_base_dir "${CMAKE_SOURCE_DIR}/reports") +set(immer_benchmark_report_dir "${immer_benchmark_report_base_dir}/report_\ +${immer_git_commit_hash}_\ +${immer_hostname}_\ +${immer_compiler_name}_\ +${BENCHMARK_PARAM}_\ +s${BENCHMARK_SAMPLES}") + +if(DISABLE_FREE_LIST) + set(immer_benchmark_report_dir "${immer_benchmark_report_dir}_nofl") +endif() + +if(DISABLE_THREAD_SAFETY) + set(immer_benchmark_report_dir "${immer_benchmark_report_dir}_nots") +endif() + +if(BENCHMARK_DISABLE_GC) + set(immer_benchmark_report_dir "${immer_benchmark_report_dir}_nogc") +endif() + +if(CHECK_BENCHMARKS) + add_dependencies(check benchmarks) +endif() + +add_custom_target(benchmark-report-dir + COMMAND ${CMAKE_COMMAND} + -E make_directory ${immer_benchmark_report_dir}) + +file(GLOB_RECURSE immer_benchmarks "*.cpp") +foreach(_file IN LISTS immer_benchmarks) + immer_target_name_for(_target _output "${_file}") + add_executable(${_target} EXCLUDE_FROM_ALL "${_file}") + set_target_properties(${_target} PROPERTIES OUTPUT_NAME ${_output}) + add_dependencies(benchmarks ${_target}) + add_dependencies(${_target} benchmark-report-dir) + target_compile_options(${_target} PUBLIC -Wno-unused-function) + target_compile_definitions(${_target} PUBLIC + NONIUS_RUNNER + IMMER_BENCHMARK_LIBRRB=1 + IMMER_BENCHMARK_STEADY=1 + IMMER_BENCHMARK_EXPERIMENTAL=0 + IMMER_BENCHMARK_DISABLE_GC=${BENCHMARK_DISABLE_GC} + IMMER_BENCHMARK_BOOST_COROUTINE=${ENABLE_BOOST_COROUTINE}) + target_link_libraries(${_target} PUBLIC + immer-dev + ${RRB_LIBRARIES}) + target_include_directories(${_target} SYSTEM PUBLIC + ${RRB_INCLUDE_DIR}) + if(CHECK_BENCHMARKS) + add_test("benchmark/${_output}" "${CMAKE_SOURCE_DIR}/tools/with-tee.bash" + ${immer_benchmark_report_dir}/${_target}.out + "${CMAKE_CURRENT_BINARY_DIR}/${_output}" -v + -t ${_target} + -r html + -s ${BENCHMARK_SAMPLES} + -p ${BENCHMARK_PARAM} + -o ${immer_benchmark_report_dir}/${_target}.html) + endif() +endforeach() + +set(immer_ssh_method + ssh -p 5488 + -o StrictHostKeyChecking=no + -i ${CMAKE_SOURCE_DIR}/tools/travis/ssh-key) + +add_custom_target(upload-benchmark-reports + COMMAND + rsync -av -e \"${immer_ssh_method}\" + ${immer_benchmark_report_base_dir} + raskolnikov@sinusoid.es:public/misc/immer/) + +add_custom_target(copy-benchmark-reports + COMMAND + rsync -av ${immer_benchmark_report_base_dir} + ~/public/misc/immer/) |