|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -eux |
| 4 | + |
| 5 | +if [ -e "${HOME}/.cargo/bin/hyperfine" ]; then |
| 6 | + HYPERFINE_PATH=${HOME}/.cargo/bin/hyperfine |
| 7 | +elif [ -e "/usr/bin/hyperfine" ]; then |
| 8 | + HYPERFINE_PATH=/usr/bin/hyperfine |
| 9 | +else |
| 10 | + echo "Hyperfine is not installed. Please install it with 'apt install hyperfine' or 'cargo +nightly install hyperfine'." |
| 11 | + exit 42 |
| 12 | +fi |
| 13 | + |
| 14 | +BEGIN=main |
| 15 | +END=HEAD |
| 16 | + |
| 17 | +echo "[*] Listing commits" |
| 18 | +git log ${BEGIN}..${END} --reverse --format=oneline |
| 19 | +COMMITS=$(git log ${BEGIN}..${END} --reverse --format=oneline | cut -d' ' -f1) |
| 20 | + |
| 21 | +INDEX_COMMITS= |
| 22 | +ITER=0 |
| 23 | +for COMMIT in ${COMMITS} |
| 24 | +do |
| 25 | + ITER=$(expr ${ITER} + 1) |
| 26 | + printf -v INDEX "%02d" ${ITER} |
| 27 | + if [ "${INDEX_COMMITS}" != "" ]; then |
| 28 | + INDEX_COMMITS="${INDEX_COMMITS}," |
| 29 | + fi |
| 30 | + INDEX_COMMITS=${INDEX_COMMITS}${INDEX}-${COMMIT} |
| 31 | +done |
| 32 | +echo "Commits joined as a hyperfine parameter list: ${INDEX_COMMITS}" |
| 33 | + |
| 34 | +echo "[*] Building at all commits" |
| 35 | +./tools/build-all-commits.sh ${COMMITS} |
| 36 | +sleep 15 |
| 37 | + |
| 38 | +SLEEP_SECONDS=10 |
| 39 | + |
| 40 | +function benchmark() { |
| 41 | + ARITHMETIC=$1 |
| 42 | + EQUALIZE=$2 |
| 43 | + INPUT=$3 |
| 44 | + |
| 45 | + ${HYPERFINE_PATH} \ |
| 46 | + --setup "sleep ${SLEEP_SECONDS}" \ |
| 47 | + --warmup 1 \ |
| 48 | + --parameter-list INDEX_COMMIT ${INDEX_COMMITS} \ |
| 49 | + "./bin/stv-rs-{INDEX_COMMIT} --arithmetic ${ARITHMETIC} --input ${INPUT} meek ${EQUALIZE} --parallel=false > /dev/null" |
| 50 | + |
| 51 | + for NUM_THREADS in 2 4 8 |
| 52 | + do |
| 53 | + RAYON_NUM_THREADS=${NUM_THREADS} ${HYPERFINE_PATH} \ |
| 54 | + --setup "sleep ${SLEEP_SECONDS}" \ |
| 55 | + --warmup 1 \ |
| 56 | + --parameter-list INDEX_COMMIT ${INDEX_COMMITS} \ |
| 57 | + "./bin/stv-rs-{INDEX_COMMIT} --arithmetic ${ARITHMETIC} --input ${INPUT} meek ${EQUALIZE} --parallel=true > /dev/null" |
| 58 | + done |
| 59 | +} |
| 60 | + |
| 61 | +benchmark fixed9 "" "testdata/shuffle_ballots/rand_sorted_lexicographically.blt" |
| 62 | +benchmark fixed9 "" "testdata/shuffle_ballots/rand_10k_sorted_lexicographically.blt" |
| 63 | +benchmark fixed9 --equalize "testdata/ballots/random/rand_hypergeometric.blt" |
| 64 | +benchmark bigfixed9 "" "testdata/ballots/random/rand_hypergeometric.blt" |
0 commit comments