Files
bux-lang/tools/bench.sh
T
dimgigov eb81856565 feat: HTTP registry, app/bench harnesses, and DWARF #line maps
Ship QUALITY_PLAN sessions 31–33: fetchable package index URLs, showcase
app and micro/nexus benchmarks, and debugger-friendly C codegen.

- Registry: BUX_REGISTRY accepts http(s) URLs (curl/wget → ~/.bux/cache)
- E.2: make test-apps smoke for nexus/boko/simpledb/jwt-pitbul
- E.5: benches/micro + C/Nim/Zig twins; make bench-nexus (wrk)
- E.4: HIR locs → #line .bux; default -O0 -g; --release -O2; make test-dwarf
2026-07-19 22:46:45 +03:00

68 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Run Bux micro-benchmarks + language twins (C / Nim / optional Zig). E.5
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
BUXC="$ROOT/buxc"
RUN_NEXUS="${BENCH_NEXUS:-0}"
if [[ ! -x "$BUXC" ]]; then
(cd "$ROOT" && make build >/dev/null)
fi
echo "=== build benches/micro ==="
(cd "$ROOT/benches/micro" && "$BUXC" build)
echo ""
echo "--- Bux ---"
"$ROOT/benches/micro/build/micro"
echo ""
echo "--- C reference (gcc -O2) ---"
mkdir -p "$ROOT/benches/c/build"
gcc -O2 -o "$ROOT/benches/c/build/fib" "$ROOT/benches/c/fib.c"
gcc -O2 -o "$ROOT/benches/c/build/int_loop" "$ROOT/benches/c/int_loop.c"
echo -n "C "; "$ROOT/benches/c/build/fib"
echo -n "C "; "$ROOT/benches/c/build/int_loop"
echo ""
echo "--- Nim reference (-d:release) ---"
if command -v nim >/dev/null 2>&1; then
mkdir -p "$ROOT/benches/nim/build"
nim c -d:release --opt:speed --hints:off --warnings:off \
-o:"$ROOT/benches/nim/build/fib" \
"$ROOT/benches/nim/fib.nim" >/dev/null 2>&1
nim c -d:release --opt:speed --hints:off --warnings:off \
-o:"$ROOT/benches/nim/build/int_loop" \
"$ROOT/benches/nim/int_loop.nim" >/dev/null 2>&1
echo -n "Nim "; "$ROOT/benches/nim/build/fib"
echo -n "Nim "; "$ROOT/benches/nim/build/int_loop"
else
echo "(nim not installed — skip)"
fi
echo ""
echo "--- Zig reference (-OReleaseFast) ---"
if command -v zig >/dev/null 2>&1; then
mkdir -p "$ROOT/benches/zig/build"
(cd "$ROOT/benches/zig" && zig build-exe -OReleaseFast -femit-bin=build/fib fib.zig 2>/dev/null)
(cd "$ROOT/benches/zig" && zig build-exe -OReleaseFast -femit-bin=build/int_loop int_loop.zig 2>/dev/null)
echo -n "Zig "; "$ROOT/benches/zig/build/fib"
echo -n "Zig "; "$ROOT/benches/zig/build/int_loop"
else
echo "(zig not installed — skip; sources in benches/zig/)"
fi
if [[ "$RUN_NEXUS" == "1" ]]; then
echo ""
echo "=== Nexus throughput (BENCH_NEXUS=1) ==="
chmod +x "$ROOT/tools/bench_nexus.sh"
"$ROOT/tools/bench_nexus.sh"
fi
echo ""
if [[ "$RUN_NEXUS" == "1" ]]; then
echo "PASS: bench (Bux + language twins + nexus)"
else
echo "PASS: bench (Bux + language twins)"
fi