Skip to content

Native driver performance ​

Native driver timings use Julia 1.12.6, GeoDataFrames 0.4.3, and the fixtures in test/data. Each result is the median of 20 warmed BenchmarkTools samples. Values compare the ArchGDAL median with the native median; values greater than 1.11x make the native backend at least 10% faster.

CSV uses test_wkt.csv; GeoJSON uses test_points.geojson; Shapefile uses test_points.shp; FlatGeobuf uses countries.fgb; GeoParquet uses example.parquet; and GeoArrow uses example-multipolygon_z.arrow. Write measurements first use the same three-point in-memory table for every backend.

BackendOperationNative median (ms)ArchGDAL median (ms)ArchGDAL/native
CSVread0.190.532.85x
GeoJSONread0.260.542.09x
Shapefileread0.671.181.75x
FlatGeobufread11.601.000.09x
GeoParquetread0.7312.0716.55x
GeoArrowread0.440.541.21x
CSVwrite0.100.202.00x
GeoJSONwrite0.110.212.02x
Shapefilewrite0.420.481.14x
GeoParquetwrite0.140.503.49x
GeoArrowwrite0.290.301.03x

Write performance for 10,000 polygons ​

This workload repeats a GeoInterface.Wrappers.MultiPolygon 10,000 times. The polygon is backed by fully materialized nested coordinate vectors, avoiding backend-specific geometry representations. It measures serialization and output costs at a more representative scale.

BackendOperationNative median (ms)ArchGDAL median (ms)ArchGDAL/native
CSVwrite783.881078.821.38x
GeoJSONwrite882.1010837.5112.29x
Shapefilewrite768.961888.292.46x
GeoParquetwrite337.041187.143.52x
GeoArrowwrite1001.601238.351.24x

Read performance for 10,000 polygons ​

Each format is written once from the same native GeoInterface wrapper, then read repeatedly from that unchanged file. The write step is outside the timed region. CSV uses a WKT geometry column so its native reader parses the geometries.

BackendOperationNative median (ms)ArchGDAL median (ms)ArchGDAL/native
CSVread143.942432.7916.90x
GeoJSONread384.712971.837.72x
Shapefileread40.59130.613.22x
GeoParquetread26.1198.003.75x
GeoArrowread0.7695.06125.63x