Options

Compare GeoUtils options

Each section changes one option at a common workload while keeping the others fixed. Runs use one worker and one thread.

Commit a31a03838b63bb9e39d21d0d956c72f1bcad2282 on machine github-actions-x64-f56edd1d

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.Ratios Relative values for the same workload; lower is better.

Execution modes

Compare Eager, Dask and Multiprocessing with one worker, showing coordination costs without parallel speed-up.

Operation and methodEngineReference workloadGeoUtils execution mode
EagerDaskMultiprocessing
Raster ⟶ Raster
Reprojection — NearestRasterio/GDAL2,048 × 2,048 input/output raster512 × 512 chunksTime1.05 s1.00× EagerMemory443 MB1.00× EagerTime3.67 s3.50× EagerMemory797 MB1.80× EagerTime4.75 s4.53× EagerMemory798 MB1.80× Eager
Filtering — MeanSciPy2,048 × 2,048 raster1,024 × 1,024 chunks5 × 5 filter—Time2.15 sMemory788 MBTime1.8 sMemory785 MB
Raster ⟶ Point
Point interpolation — LinearSciPy2,048 × 2,048 source raster16,384 interpolated points512 × 512 chunksTime0.075 s1.00× EagerMemory403 MB1.00× EagerTime2.55 s34.06× EagerMemory752 MB1.87× EagerTime3.32 s44.22× EagerMemory718 MB1.78× Eager
SubsamplingNo separate engine2,048 × 2,048 source raster524,288 output points512 × 512 chunks—Time4.05 sMemory994 MBTime10.7 sMemory936 MB
Point cloud conversionNo separate engine1,024 × 1,024 source rasterone output point per cell512 × 512 chunks—Time6.18 sMemory1.29e+03 MBTime8.61 sMemory992 MB
Raster ⟶ Vector
Polygonization — Label stitchRasterio/GDAL2,048 × 2,048 raster441 disconnected raster regions512 × 512 chunksTime0.145 s1.00× EagerMemory501 MB1.00× EagerTime2.72 s18.80× EagerMemory731 MB1.46× EagerTime3.52 s24.32× EagerMemory723 MB1.44× Eager
Point ⟶ Raster
Gridding — NearestSciPy2,048 × 2,048 output raster17 × 17 source points512 × 512 chunksTime1.18 s1.00× EagerMemory401 MB1.00× EagerTime5.2 s4.41× EagerMemory794 MB1.98× EagerTime4.56 s3.87× EagerMemory764 MB1.91× Eager
Gridding — Linear (Delaunay)SciPy2,048 × 2,048 output raster17 × 17 source points512 × 512 chunksTime0.214 s1.00× EagerMemory390 MB1.00× EagerTime4.3 s20.12× EagerMemory796 MB2.04× EagerTime3.51 s16.40× EagerMemory767 MB1.97× Eager
Gridding — Inverse-distanceSciPy2,048 × 2,048 output raster17 × 17 source points512 × 512 chunksTime1.4 s1.00× EagerMemory431 MB1.00× EagerTime5.33 s3.80× EagerMemory793 MB1.84× EagerTime4.61 s3.29× EagerMemory770 MB1.79× Eager
Gridding — Circular meanSciPy2,048 × 2,048 output raster17 × 17 source points512 × 512 chunksTime1.39 s1.00× EagerMemory418 MB1.00× EagerTime5.48 s3.93× EagerMemory793 MB1.90× EagerTime4.59 s3.29× EagerMemory767 MB1.84× Eager
Vector ⟶ Raster
RasterizationRasterio/GDAL2,601 source polygon features2,048 × 2,048 output raster512 × 512 chunksTime0.115 s1.00× EagerMemory360 MB1.00× EagerTime2.45 s21.32× EagerMemory724 MB2.01× EagerTime3.43 s29.87× EagerMemory716 MB1.99× Eager
Raster ⟶ Other
Grouped statistics — Moments — Dense summariesNumPy2,048 × 2,048 raster256 × 256 chunks64 local groupstwo valuesTime0.388 s1.00× EagerMemory778 MB1.00× EagerTime3.62 s9.33× EagerMemory736 MB0.95× EagerTime12.5 s32.10× EagerMemory959 MB1.23× Eager
Grouped statistics — Robust — Complete groupsNumPy2,048 × 2,048 raster256 × 256 chunks64 local groupstwo valuesTime0.433 s1.00× EagerMemory673 MB1.00× EagerTime6.43 s14.87× EagerMemory739 MB1.10× EagerTime11.6 s26.81× EagerMemory992 MB1.47× Eager

Calculation engines

Compare numerical libraries during eager execution, so scheduling remains fixed. GDAL CLI is shown separately where an equivalent external command exists.

Operation and methodReference workloadGeoUtils calculation engineExternal reference
Rasterio/GDALSciPyNumbaNumPyGDAL CLI
Raster ⟶ Raster
Reprojection — Nearest2,048 × 2,048 input/output raster512 × 512 chunksTime1.05 s0.99× GDAL CLIMemory443 MB1.03× GDAL CLI———Time1.06 sMemory431 MB
Raster ⟶ Point
Point interpolation — Linear2,048 × 2,048 source raster16,384 interpolated points512 × 512 chunks—Time0.075 sMemory403 MB———
Raster ⟶ Vector
Polygonization — Label stitch2,048 × 2,048 raster441 disconnected raster regions512 × 512 chunksTime0.145 s0.53× GDAL CLIMemory501 MB1.09× GDAL CLI———Time0.271 sMemory459 MB
Point ⟶ Raster
Gridding — Nearest2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks—Time1.18 s0.70× GDAL CLIMemory401 MB0.95× GDAL CLITime3.63 s2.15× GDAL CLIMemory433 MB1.02× GDAL CLI—Time1.69 sMemory423 MB
Gridding — Linear (Delaunay)2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks—Time0.214 s1.79× GDAL CLIMemory390 MB0.92× GDAL CLI——Time0.119 sMemory423 MB
Gridding — Inverse-distance2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks—Time1.4 s0.86× GDAL CLIMemory431 MB1.02× GDAL CLITime0.197 s0.12× GDAL CLIMemory488 MB1.16× GDAL CLI—Time1.64 sMemory423 MB
Gridding — Circular mean2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks—Time1.39 s3.05× GDAL CLIMemory418 MB0.99× GDAL CLITime0.191 s0.42× GDAL CLIMemory488 MB1.15× GDAL CLI—Time0.456 sMemory423 MB
Vector ⟶ Raster
Rasterization2,601 source polygon features2,048 × 2,048 output raster512 × 512 chunksTime0.115 s2.38× GDAL CLIMemory360 MB1.01× GDAL CLI———Time0.0483 sMemory355 MB
Raster ⟶ Other
Grouped statistics — Moments — Dense summaries2,048 × 2,048 raster256 × 256 chunks64 local groupstwo values———Time0.388 sMemory778 MB—
Grouped statistics — Robust — Complete groups2,048 × 2,048 raster256 × 256 chunks64 local groupstwo values———Time0.433 sMemory673 MB—

Operation methods

Compare operation-specific algorithms, such as nearest, linear/Delaunay and inverse-distance gridding. Methods can answer different numerical questions, so these costs are not a quality ranking.

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.

Reference workload: 2,048 × 2,048 output rastermethod-specific source point set512 × 512 chunks

GeoUtils method
NearestLinear (Delaunay)Inverse-distanceCircular mean
Time1.18 sMemory401 MBTime0.214 sMemory390 MBTime1.4 sMemory431 MBTime1.39 sMemory418 MB

View how this comparison scales

Chunk strategies

Compare how chunked operations reconcile partial results at chunk boundaries.

Grouped reduction strategies by raster size

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.

Reference workload: 2,048 × 2,048 raster256 × 256 chunks64 local groupstwo values

GeoUtils chunk strategy
AutomaticDense summariesSparse summariesComplete groups
Time3.69 sMemory735 MBTime3.62 sMemory736 MBTime3.77 sMemory737 MBTime6.18 sMemory737 MB

View how this comparison scales

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.

Reference workload: 1,024 × 1,024 raster512 × 512 chunks64 local groupstwo values

GeoUtils chunk strategy
AutomaticDense summariesSparse summariesComplete groups
Time2.12 sMemory727 MBTime2.08 sMemory727 MBTime2.1 sMemory738 MBTime2.31 sMemory740 MB

View how this comparison scales

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.

Reference workload: 1,024 × 1,024 raster512 × 512 chunks64 interleaved groupstwo values

GeoUtils chunk strategy
AutomaticDense summariesSparse summariesComplete groups
Time2.09 sMemory738 MBTime2.04 sMemory734 MBTime2.11 sMemory736 MBTime2.81 sMemory734 MB

View how this comparison scales

Grouped reduction strategies by declared group count

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.

Reference workload: 1,024 × 1,024 raster128 × 128 chunks65 × 65 local groupstwo values

GeoUtils chunk strategy
AutomaticDense summariesSparse summariesComplete groups
Time3.25 sMemory746 MBTime3.1 sMemory750 MBTime3.18 sMemory745 MBTime21.3 sMemory776 MB

View how this comparison scales

Polygonization chunk strategy (Dask execution)

Polygonizes the same 21 × 21 disconnected rectangles with Dask while comparing how polygons crossing chunk boundaries are reconciled.

Reference workload: 2,048 × 2,048 raster441 disconnected raster regions512 × 512 chunks

GeoUtils chunk strategy
Label unionLabel stitchGeometry stitch
Time4.29 sMemory739 MBTime2.72 sMemory731 MBTime2.76 sMemory1.06e+03 MB

View how this comparison scales

Point output formats

Compare file-to-file LAS and LAZ output from GeoUtils multiprocessing and PDAL CLI.

LAS/LAZ raster subsampling compared with PDAL

Selects 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.

Reference workload: 2,048 × 2,048 source raster524,288 output points512 × 512 chunks

Output And Writer
GeoUtils LASPDAL LASGeoUtils LAZPDAL LAZ
Time9.21 sMemory755 MBTime0.799 sMemory589 MBTime9.24 sMemory759 MBTime0.907 sMemory590 MB

View how this comparison scales

LAS/LAZ raster to point cloud conversion compared with PDAL

Converts 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.

Reference workload: 1,024 × 1,024 source rasterone output point per cell512 × 512 chunks

Output And Writer
GeoUtils LASPDAL LASGeoUtils LAZPDAL LAZ
Time3.54 sMemory882 MBTime0.297 sMemory424 MBTime3.54 sMemory893 MBTime0.455 sMemory434 MB

View how this comparison scales