#!/bin/bash
# Usage:
# scripts/perf_bench_bin.sh [iterations]
#
# Environment:
# BENCH_ARGS Extra args for benchmark (default: --no-render)
# BENCH_EXE Path to bench binary (default: .lake/build/bin/bench)
# PERF_RESULTS_ROOT Results root dir (default: perf)
# PERF_RUN_LABEL Label for run (default: HHMMSS)
# FLAMEGRAPH_DIR Flamegraph tools dir (default: $HOME/.local/bin/Flamegraph)
#
# Example:
# BENCH_ARGS="--case search-bloom --lines 800 --line-len 120 --no-render" scripts/perf_bench_bin.sh 2000
ITERATIONS="10000"
BENCH_ARGS=""
PERF_CASES=""
case_list=""
iter_set="0"
while [; do
case "" in
-n|--iterations)
ITERATIONS=""
iter_set="1"
;;
--case)
case_list=","
;;
--cases)
PERF_CASES=""
;;
-h|--help)
;;
*)
if && [; then
ITERATIONS=""
iter_set="1"
else
fi
;;
esac
done
if [; then
case_list=""
if [; then
PERF_CASES=","
else
PERF_CASES=""
fi
fi
BENCH_EXE=""
RESULTS_ROOT=""
RUN_LABEL=""
DATE_DIR="/"
REPORT_DIR="/report"
PERF_DATA="/perf-bench-bin-.data"
PERF_REPORT="/perf-bench-bin-.log"
FLAME_DIR="/flamegraph"
PERF_FOLDED="/perf-bench-bin-.folded"
FLAMEGRAPH_SVG="/flamegraph-bench-bin-.svg"
FLAMEGRAPH_DIR=""
STACKCOLLAPSE_BIN=""
FLAMEGRAPH_BIN=""
if [; then
fi
# 1. Build bench
if [; then
fi
# 2. Check for perf
if ! ; then
fi
# 3. Prepare output directories
# 4. Run perf record against the bench binary (no lake exec overhead)
if [; then
IFS=','
for; do
c_trim=""
if [; then
continue
fi
case "" in
linear) norm="search-linear" ;;
bloom) norm="search-bloom" ;;
*) norm="" ;;
esac
done
else
fi