Skip to content

Add asv benchmark coverage for geotiff read/write paths#3603

Merged
brendancol merged 2 commits into
mainfrom
deep-sweep-benchmarks-geotiff-2026-07-02
Jul 2, 2026
Merged

Add asv benchmark coverage for geotiff read/write paths#3603
brendancol merged 2 commits into
mainfrom
deep-sweep-benchmarks-geotiff-2026-07-02

Conversation

@brendancol

Copy link
Copy Markdown
Contributor

geotiff had no asv benchmark, so open_geotiff and to_geotiff had no regression coverage even though the module has dask and GPU backends. This adds benchmarks/benchmarks/geotiff.py.

What it covers:

  • WriteGeoTIFF: to_geotiff on numpy, dask (the tile-row streaming writer), and cupy (the GPU writer)
  • WriteCOG: the cog=True overview-pyramid path on numpy and cupy
  • ReadGeoTIFF: open_geotiff decode on numpy and cupy (GPU decoder)
  • ReadGeoTIFFChunked: open_geotiff(chunks=) dask-backed read, materialized

Each class writes a small temp GeoTIFF in setup and deletes it in teardown, so nothing depends on network fixtures. Two sizes, 512 and 2048, keep CI time down while still showing how each path scales.

Benchmark-only, no source changes. I ran every class directly on a GPU host to confirm it works; the cupy paths ran for real, not skipped.

geotiff had no asv benchmark, so open_geotiff and to_geotiff had no
regression coverage even though the module has dask and GPU backends.
This adds benchmarks/benchmarks/geotiff.py.

What it covers:
- WriteGeoTIFF: to_geotiff on numpy, dask (the tile-row streaming
  writer), and cupy (the GPU writer)
- WriteCOG: the cog=True overview-pyramid path on numpy and cupy
- ReadGeoTIFF: open_geotiff decode on numpy and cupy (GPU decoder)
- ReadGeoTIFFChunked: open_geotiff(chunks=) dask-backed read, materialized

Each class writes a small temp GeoTIFF in setup and deletes it in
teardown, so nothing depends on network fixtures. Two sizes, 512 and
2048, keep CI time down while still showing how each path scales.

Benchmark-only, no source changes. I ran every class directly on a GPU
host to confirm it works; the cupy paths ran for real, not skipped.
@brendancol brendancol merged commit 56a3928 into main Jul 2, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant