#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ARTIFACTS_DIR="${ARTIFACTS_DIR:-$ROOT_DIR/artifacts}"
CASE="${CASE:-runtime_unique_ann_steady_state}"
OUT_SVG="${OUT_SVG:-$ARTIFACTS_DIR/flamegraph-${CASE}.svg}"

mkdir -p "$ARTIFACTS_DIR"
cd "$ROOT_DIR"

case "$CASE" in
  runtime_unique_ann_steady_state|runtime_unique_ann_query_only)
    cargo bench --bench vector_ann -- prepare_runtime_unique_ann_store >/dev/null
    ;;
  runtime_ambiguous_fallback_steady_state|runtime_ambiguous_fallback_query_only)
    cargo bench --bench vector_ann -- prepare_runtime_ambiguous_fallback_store >/dev/null
    ;;
  runtime_scan_f32_steady_state|runtime_scan_f32)
    cargo bench --bench vector_ann -- prepare_runtime_scan_f32_store >/dev/null
    ;;
  runtime_scan_quantized_i8_steady_state|runtime_scan_quantized_i8)
    cargo bench --bench vector_ann -- prepare_runtime_scan_quantized_i8_store >/dev/null
    ;;
esac

CARGO_PROFILE_BENCH_DEBUG="${CARGO_PROFILE_BENCH_DEBUG:-true}" \
  cargo flamegraph --bench vector_ann -o "$OUT_SVG" -- "$CASE"
echo "vector_ann_flamegraph_svg: $OUT_SVG"
