Scaling

Performance as inputs grow

Each section varies one input size while other settings stay fixed. Select a comparison to show or hide its plot.

Commit a31a03838b63bb9e39d21d0d956c72f1bcad2282 on machine github-actions-x64-f56edd1d

Operation only Calculation after the execution mode has been initialized.Elapsed time Prepared inputs through completed output, including worker or CLI startup.Peak memory Highest combined memory of the benchmark process and its child workers.

Scaling with raster size

Raster width and height vary together; other inputs remain fixed.

GeoUtils and Flox grouped statistics by raster sizeCompares GeoUtils stats() with Flox on two prebuilt float64 arrays, the same boolean mask and declared categories. Both return finite count, mean and population standard deviation (ddof=0), including completed Dask results and dataframe construction. Dask uses one threaded worker; GeoUtils multiprocessing uses one persistent process initialized before the arrays. Both use 256 × 256 tiles. Worker startup is excluded, while tile serialization and merging are timed. Flox uses its default engine and map-reduce for lazy group labels.Execution modes
GeoUtils and Flox grouped statistics by raster size
Grouped moments by raster size and execution modeComputes count, mean, standard deviation and extrema for two values with independent missing data in 64 rectangular groups. Dask reads chunks lazily; multiprocessing loads the input in the client.Execution modes
Grouped moments by raster size and execution mode
Grouped reduction strategies by raster sizeComputes count, mean, standard deviation and extrema for two values with independent gaps. Dense summaries allocate every declared group per chunk; sparse summaries retain encountered groups; groupwise gathers complete observations. Automatic uses the declared group count.Chunk strategies
Grouped reduction strategies by raster size
Exact grouped median and NMAD by raster sizeGathers complete observations in 64 rectangular groups to calculate exact medians and NMAD for two values with independent missing data. Memory depends on the largest complete group.Execution modes
Exact grouped median and NMAD by raster size
Nearest reprojection by raster size (Rasterio/GDAL engine)Reprojects a WGS84 (EPSG:4326) raster to UTM zone 32N (EPSG:32632) with nearest-neighbor resampling while preserving the selected output dimensions.Execution modes
Nearest reprojection by raster size (Rasterio/GDAL engine)
Label-stitch polygonization by raster size (Rasterio/GDAL engine)Polygonizes value-1 pixels in a WGS84 raster containing 21 × 21 disconnected rectangles while varying raster size.Execution modes
Label-stitch polygonization by raster size (Rasterio/GDAL engine)
Polygonization chunk strategy (Dask execution)Polygonizes the same 21 × 21 disconnected rectangles with Dask while comparing how polygons crossing chunk boundaries are reconciled.Chunk strategies
Polygonization chunk strategy (Dask execution)
Rasterization by raster size (Rasterio/GDAL engine)Burns 51 × 51 regularly spaced WGS84 polygons as value 1 into a byte raster with background 0.Execution modes
Rasterization by raster size (Rasterio/GDAL engine)
Raster to point cloud by raster sizeConverts every raster cell to its center coordinate and band value, then completes the Dask dataframe or GeoPackage output.Execution modes
Raster to point cloud by raster size
LAS/LAZ raster to point cloud conversion compared with PDALConverts every raster cell to its center coordinate and writes the raster value as native elevation. GeoUtils multiprocessing and PDAL CLI each write both LAS and LAZ.Point output formats
LAS/LAZ raster to point cloud conversion compared with PDAL
Nearest gridding execution mode (SciPy engine)Grids a 17 × 17 regular WGS84 point set with unlimited nearest-neighbor support onto a square WGS84 raster.Execution modes
Nearest gridding execution mode (SciPy engine)
Linear (Delaunay) gridding execution mode (SciPy engine)Grids a 17 × 17 regular WGS84 point set with Delaunay linear interpolation onto a square WGS84 raster.Execution modes
Linear (Delaunay) gridding execution mode (SciPy engine)
Inverse-distance gridding execution mode (SciPy engine)Grids a 17 × 17 regular WGS84 point set with inverse-distance weighting and 16-pixel support onto a square WGS84 raster.Execution modes
Inverse-distance gridding execution mode (SciPy engine)
Circular mean gridding execution mode (SciPy engine)Grids a 17 × 17 regular WGS84 point set with a circular mean and 16-pixel support onto a square WGS84 raster.Execution modes
Circular mean gridding execution mode (SciPy engine)
Gridding method (SciPy engine, eager execution)Grids regular WGS84 point sets onto square WGS84 rasters using the fixture and support selected for each numerical method.Methods
Gridding method (SciPy engine, eager execution)
Nearest gridding calculation engine (eager execution)Grids a 17 × 17 regular WGS84 point set with unlimited nearest-neighbor support onto a square WGS84 raster.Calculation engines
Nearest gridding calculation engine (eager execution)
Inverse-distance gridding calculation engine (eager execution)Grids a 17 × 17 regular WGS84 point set with inverse-distance weighting and 16-pixel support onto a square WGS84 raster.Calculation engines
Inverse-distance gridding calculation engine (eager execution)
Circular mean gridding calculation engine (eager execution)Grids a 17 × 17 regular WGS84 point set with a circular mean and 16-pixel support onto a square WGS84 raster.Calculation engines
Circular mean gridding calculation engine (eager execution)

Scaling with chunk size

Chunk width and height vary while the complete raster remains fixed.

Grouped reduction strategies by chunk size (local groups)Computes count, mean, standard deviation and extrema for two values with independent gaps. Dense summaries allocate every declared group per chunk; sparse summaries retain encountered groups; groupwise gathers complete observations. Automatic uses the declared group count.Chunk strategies
Grouped reduction strategies by chunk size (local groups)
Grouped reduction strategies by chunk size (interleaved groups)Computes count, mean, standard deviation and extrema for two values with independent gaps. Dense summaries allocate every declared group per chunk; sparse summaries retain encountered groups; groupwise gathers complete observations. Automatic uses the declared group count.Chunk strategies
Grouped reduction strategies by chunk size (interleaved groups)
Mean filter by chunk size (SciPy engine)Applies a 5 × 5 mean filter to a 2048 × 2048 WGS84 raster while varying square chunk size.Execution modes
Mean filter by chunk size (SciPy engine)

Scaling with the number of interpolated points

The number of requested point locations varies while the source raster remains fixed.

Linear interpolation by number of points (SciPy engine)Interpolates deterministic WGS84 points from a 2048 × 2048 WGS84 raster with 512 × 512 chunks.Execution modes
Linear interpolation by number of points (SciPy engine)

Scaling with the number of source points

The number of source points varies while the output raster remains fixed.

Nearest gridding by number of source points (eager execution)Grids a regular WGS84 point set with unlimited nearest-neighbor support onto a fixed 1024 × 1024 WGS84 raster.Calculation engines
Nearest gridding by number of source points (eager execution)

Scaling with the number of output points

The point cloud size varies while the source raster remains fixed.

Raster subsampling by execution modeSelects a fixed number of cells, calculates their center coordinates and band values, and completes the Dask dataframe or GeoPackage output. Both GeoUtils and PDAL use random seed 42 before keeping the requested count.Execution modes
Raster subsampling by execution mode
LAS/LAZ raster subsampling compared with PDALSelects a fixed number of raster cells and writes their center coordinates with the raster value as native elevation. GeoUtils multiprocessing and PDAL CLI each write both LAS and LAZ.Point output formats
LAS/LAZ raster subsampling compared with PDAL

Scaling with the number of groups

The number of rectangular groups varies while raster and chunk dimensions remain fixed.

GeoUtils and Flox grouped statistics by group countCompares GeoUtils stats() with Flox on two prebuilt float64 arrays, the same boolean mask and declared categories. Both return finite count, mean and population standard deviation (ddof=0), including completed Dask results and dataframe construction. Dask uses one threaded worker; GeoUtils multiprocessing uses one persistent process initialized before the arrays. Both use 256 × 256 tiles. Worker startup is excluded, while tile serialization and merging are timed. Flox uses its default engine and map-reduce for lazy group labels.Execution modes
GeoUtils and Flox grouped statistics by group count
Grouped reduction strategies by declared group countComputes count, mean, standard deviation and extrema for two values with independent gaps. Dense summaries allocate every declared group per chunk; sparse summaries retain encountered groups; groupwise gathers complete observations. Automatic uses the declared group count.Chunk strategies
Grouped reduction strategies by declared group count