Files
hakmem/benchmarks/scripts/comprehensive/run_suite_compare.sh

65 lines
2.0 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
# Aggregate suite runner: tiny-hot triad, random-mixed triad, comprehensive pair, optional app benches
# Usage: scripts/run_suite_compare.sh [cycles_hot] [cycles_mixed] [with_apps]
# cycles_hot : tiny hot cycles (default 80000)
# cycles_mixed : random mixed cycles (default 120000)
# with_apps : 0/1 (default 0) — if 1, runs scripts/run_apps_with_hakmem.sh
ROOT_DIR=$(cd "$(dirname "$0")/.." && pwd)
cd "$ROOT_DIR"
cycles_hot=${1:-80000}
cycles_mixed=${2:-120000}
with_apps=${3:-0}
TS=$(date +%Y%m%d_%H%M%S)
OUTDIR="bench_results/suite_${TS}"
mkdir -p "$OUTDIR"
log() { echo "[$(date +%H:%M:%S)] $*"; }
log "tiny hot triad ($cycles_hot)"
bash scripts/run_tiny_hot_triad.sh "$cycles_hot" | tee "$OUTDIR/tiny_hot.log" >/dev/null || true
th_csv=$(sed -n 's/^\[done\] CSV: \(.*\)$/\1/p' "$OUTDIR/tiny_hot.log" | tail -n1)
log "random mixed triad ($cycles_mixed)"
bash scripts/run_random_mixed_matrix.sh "$cycles_mixed" | tee "$OUTDIR/random_mixed.log" >/dev/null || true
rm_csv=$(sed -n 's/^\[done\] CSV: \(.*\)$/\1/p' "$OUTDIR/random_mixed.log" | tail -n1)
log "comprehensive pair"
bash scripts/run_comprehensive_pair.sh | tee "$OUTDIR/comp_pair.log" >/dev/null || true
cp_csv=$(sed -n 's/^\[done\] CSV: \(.*\)$/\1/p' "$OUTDIR/comp_pair.log" | tail -n1)
if [[ "$with_apps" == "1" ]]; then
log "apps (LD-safe)"
bash scripts/run_apps_with_hakmem.sh | tee "$OUTDIR/apps.log" >/dev/null || true
fi
summary="$OUTDIR/summary.md"
{
echo "# HAKMEM vs System vs mimalloc Suite ($TS)"
echo ""
echo "- tiny hot triad CSV: \
\
$th_csv"
echo "- random mixed triad CSV: \
\
$rm_csv"
echo "- comprehensive pair CSV: \
\
$cp_csv"
if [[ "$with_apps" == "1" ]]; then
echo "- apps log: $OUTDIR/apps.log"
fi
echo ""
echo "Quick peek (head):"
echo ""; echo '```'; sed -n '1,20p' "$th_csv"; echo '```'
echo ""; echo '```'; sed -n '1,20p' "$rm_csv"; echo '```'
echo ""; echo '```'; sed -n '1,30p' "$cp_csv"; echo '```'
} > "$summary"
log "done → $summary"