Skip to content

Array bindings by language

The array data set is grid and grid_window: one 512×512 float64 array, and an interior window of that array. A row is registered when a maintained library writes that array and reads the window through its own API. A one-off call into the C library, written only for this benchmark, is not a row.

NetCDF-4 files are HDF5 files. A second NetCDF row in a language that already times HDF5 would measure the same container again, so new languages on this track are HDF5 only. Fortran and Python keep the NetCDF and ADIOS2 rows that were already published. ADIOS2's own bindings are C++, C, Fortran, Python, and Matlab. No further ADIOS2 row is added: the C and C++ engines are the same library Fortran and Python already call, and the other languages have no binding.

Registered

Language HDF5 NetCDF ADIOS2
C hdf5
C++ highfive
C# PureHDF
Fortran hdf5-fortran netcdf-fortran adios2
JavaScript h5wasm
Python h5py netCDF4 adios2
Rust hdf5-metno

hdf5 uses the HDF5 core driver and returns the file image. highfive and hdf5-metno write a file and return those bytes. h5wasm uses the WebAssembly memory filesystem. PureHDF is a managed writer, not libhdf5, and the C# string path carries the file bytes as Latin-1 so the size is the file length. Every window read is a hyperslab, a slice, or a selection. These rows do not time the five suite types.

Not registered

Language Why there is no row
Go gonum.org/v1/hdf5 is archived. There is no maintained writer for the array contract.
Java The HDF Group Java binding is a native installer, not a Maven dependency this runner can build. JHDF is read-focused.
Kotlin A Kotlin row would call the Java libraries. Those are not registered.
Mojo No HDF5 library. A hand-written C FFI is not a separate row.
PHP No maintained writer.
Swift No maintained writer. A C import would time libhdf5 plus an FFI crossing this suite did not write a library for.
Zig No maintained writer. The same FFI crossing applies.

PyTables, xarray, h5netcdf, and SciPy's classic NetCDF reader are not extra Python rows. xarray is not a format. The others sit on HDF5 or on NetCDF-3, and Python already times h5py and netCDF4.