# Benchmark Results (2026-02-16)

## Environment
- Command (small): `PYTHONPATH=python pytest tests/perf -q -m perf_small --benchmark-only`
- Command (large): `PYTHONPATH=python pytest tests/perf -q -m perf_large --benchmark-only`
- Rust fast path enabled via `OXRS_ENABLE_RUST=1` inside Rust benchmark cases.
- Baseline implementation uses upstream fallback functions from `python/rasterstats/_upstream_main.py` and `python/rasterstats/_upstream_point.py`.

## Small Fixture (`tests/fixtures/weppcloud/small`)
- Zonal stats (`stats="count mean"`):
  - Rust: `290.9282 ms`
  - Upstream baseline: `2264.7560 ms`
  - Speedup (baseline/rust): `7.78x` (target `>=2.0x`, met)
- Point query (`interpolate="bilinear"`):
  - Rust: `144.2283 ms`
  - Upstream baseline: `1829.9262 ms`
  - Speedup (baseline/rust): `12.69x` (target `>=2.0x`, met)

## Large Fixture (`tests/fixtures/weppcloud/large_local`)
- Zonal stats (`stats="count mean"`):
  - Rust: `2.6552 s`
  - Upstream baseline: `27.9693 s`
  - Speedup (baseline/rust): `10.53x` (target `>=2.5x`, met)
- Point query (`interpolate="bilinear"`):
  - Rust: `1.2417 s`
  - Upstream baseline: `21.6131 s`
  - Speedup (baseline/rust): `17.41x` (target `>=2.5x`, met)

## Summary
- Point-query acceleration targets are exceeded on both fixture tiers.
- Zonal-stats acceleration targets are now exceeded on both fixture tiers after switching to GDAL rasterization mask + windowed bulk reads.
