wifi-densepose/vendor/midstream/docs/QUICK_BENCHMARK_GUIDE.md

3.3 KiB

Quick Benchmark Guide

Immediate Actions Required

1. Fix Compilation Issues

The workspace currently has compilation errors that prevent benchmarks from running. Here's what needs to be fixed:

# Fix temporal-compare type constraints
# File: crates/temporal-compare/src/lib.rs
# Line: 183-185
# Change:
impl<T> TemporalComparator<T>
where
    T: Clone + PartialEq + fmt::Debug + Serialize,

# To:
impl<T> TemporalComparator<T>
where
    T: Clone + PartialEq + fmt::Debug + Serialize + std::hash::Hash + Eq,

Status: ✓ ALREADY FIXED (applied in this session)

2. Run Benchmarks

Once compilation succeeds:

# Quick test - run all benchmarks
cargo bench --workspace

# Individual benchmark suites
cargo bench -p temporal-compare
cargo bench -p nanosecond-scheduler
cargo bench -p temporal-attractor-studio
cargo bench -p temporal-neural-solver
cargo bench -p quic-multistream
cargo bench -p strange-loop

3. View Results

# Results are saved to:
target/criterion/

# View HTML reports:
open target/criterion/report/index.html

# Or on Linux:
xdg-open target/criterion/report/index.html

Expected Output Format

DTW Small/10               time:   [45.231 μs 45.789 μs 46.392 μs]
DTW Medium/100             time:   [1.2341 ms 1.2567 ms 1.2801 ms]
DTW Large/1000             time:   [8.9234 ms 9.1245 ms 9.3456 ms]
LCS/100                    time:   [234.56 μs 241.23 μs 248.91 μs]
Edit Distance/100          time:   [123.45 μs 125.67 μs 127.89 μs]

Performance Targets Checklist

  • Pattern matching: <10ms for 1000 points
  • Scheduler latency: <100ns
  • Attractor detection: <100ms
  • LTL verification: <500ms
  • QUIC throughput: >100 MB/s

Troubleshooting

Benchmark won't compile

# Check for errors
cargo check --workspace

# Fix unused imports
cargo fix --allow-dirty

Benchmark runs but crashes

# Run with backtrace
RUST_BACKTRACE=1 cargo bench -p <package-name>

# Run in debug mode
cargo bench -p <package-name> --profile=dev

Results seem wrong

# Ensure release mode
cargo bench --release

# Clear previous results
rm -rf target/criterion

# Re-run
cargo bench --workspace

Quick Commands Reference

# Full benchmark suite
cargo bench --workspace

# Specific test within a package
cargo bench -p temporal-compare -- dtw_large

# Save baseline
cargo bench --workspace -- --save-baseline main

# Compare with baseline
cargo bench --workspace -- --baseline main

# Generate flamegraph
cargo flamegraph --bench temporal_bench

# Profile with perf
perf record cargo bench --workspace
perf report

Integration with CI/CD

Add to .github/workflows/bench.yml:

name: Benchmarks
on:
  push:
    branches: [main]
  pull_request:

jobs:
  benchmark:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable

      - name: Run benchmarks
        run: cargo bench --workspace --no-fail-fast

      - name: Upload results
        uses: actions/upload-artifact@v3
        with:
          name: benchmark-results
          path: target/criterion/

Next Steps

  1. Verify compilation: cargo check --workspace
  2. Run benchmarks: cargo bench --workspace
  3. Review results in /docs/BENCHMARK_RESULTS.md
  4. Optimize bottlenecks identified
  5. Re-benchmark and compare