diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2025-01-09 17:16:04 +0900 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2025-01-09 17:16:04 +0900 |
commit | 0aa930a41f2d1ebf1fa90ec42da8f96d15a4dcbb (patch) | |
tree | 6a77b463f700e090df586672c26b9fe765fd115b /libcxx/utils/libcxx-compare-benchmarks | |
parent | ec6892d1c979ce0b84c86918d5cdbb03037b409a (diff) | |
parent | 6d16b1c5c468a79ecf867293023c89ac518ecdda (diff) | |
download | llvm-users/chapuni/cov/single/nextcount-base.zip llvm-users/chapuni/cov/single/nextcount-base.tar.gz llvm-users/chapuni/cov/single/nextcount-base.tar.bz2 |
Merge branch 'users/chapuni/cov/single/pair' into users/chapuni/cov/single/nextcount-baseusers/chapuni/cov/single/nextcount-base
Diffstat (limited to 'libcxx/utils/libcxx-compare-benchmarks')
-rwxr-xr-x | libcxx/utils/libcxx-compare-benchmarks | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/libcxx/utils/libcxx-compare-benchmarks b/libcxx/utils/libcxx-compare-benchmarks new file mode 100755 index 0000000..e04820f --- /dev/null +++ b/libcxx/utils/libcxx-compare-benchmarks @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -e + +PROGNAME="$(basename "${0}")" +MONOREPO_ROOT="$(realpath $(dirname "${PROGNAME}"))" +function usage() { +cat <<EOF +Usage: +${PROGNAME} [-h|--help] <baseline-build> <candidate-build> benchmarks... + +Compare the given benchmarks between the baseline and the candidate build directories. + +This requires those benchmarks to have already been generated in both build directories. + +<baseline-build> The path to the build directory considered the baseline. +<candidate-build> The path to the build directory considered the candidate. +benchmarks... Paths of the benchmarks to compare. Those paths are relative to '<monorepo-root>'. + +Example +======= +$ libcxx-lit build1/ -sv libcxx/test/benchmarks/algorithms/for_each.bench.cpp +$ libcxx-lit build2/ -sv libcxx/test/benchmarks/algorithms/for_each.bench.cpp +$ ${PROGNAME} build1/ build2/ libcxx/test/benchmarks/algorithms/for_each.bench.cpp +EOF +} + +if [[ "${1}" == "-h" || "${1}" == "--help" ]]; then + usage + exit 0 +fi + +if [[ $# -lt 1 ]]; then + usage + exit 1 +fi + +baseline="${1}" +candidate="${2}" +shift; shift + +GBENCH="${MONOREPO_ROOT}/third-party/benchmark" + +python3 -m venv /tmp/libcxx-compare-benchmarks-venv +source /tmp/libcxx-compare-benchmarks-venv/bin/activate +pip3 install -r ${GBENCH}/tools/requirements.txt + +for benchmark in ${@}; do + base="$(${MONOREPO_ROOT}/libcxx/utils/libcxx-benchmark-json ${baseline} ${benchmark})" + cand="$(${MONOREPO_ROOT}/libcxx/utils/libcxx-benchmark-json ${candidate} ${benchmark})" + + if [[ ! -e "${base}" ]]; then + echo "Benchmark ${benchmark} does not exist in the baseline" + continue + fi + if [[ ! -e "${cand}" ]]; then + echo "Benchmark ${benchmark} does not exist in the candidate" + continue + fi + + "${GBENCH}/tools/compare.py" benchmarks "${base}" "${cand}" +done |