hidefix 0.12.0

Concurrent HDF5 and NetCDF4 reader (experimental)
Documentation
use divan::Bencher;
use hidefix::prelude::*;

#[divan::bench]
fn read_2d_chunked(b: Bencher) {
    let i = Index::index("tests/data/dmrpp/chunked_oneD.h5").unwrap();
    let mut r = i.reader("d_4_chunks").unwrap();

    b.bench_local(|| r.values::<f32, _>(..).unwrap())
}

#[divan::bench]
fn read_2d_shuffled(b: Bencher) {
    let i = Index::index("tests/data/dmrpp/chunked_shuffled_twoD.h5").unwrap();
    let mut r = i.reader("d_4_shuffled_chunks").unwrap();

    b.bench_local(|| r.values::<f32, _>(..).unwrap())
}

#[divan::bench]
fn read_2d_compressed(b: Bencher) {
    let i = Index::index("tests/data/dmrpp/chunked_gzipped_twoD.h5").unwrap();
    let mut r = i.reader("d_4_gzipped_chunks").unwrap();

    b.bench_local(|| r.values::<f32, _>(..).unwrap())
}

#[divan::bench]
fn read_2d_shuffled_compressed(b: Bencher) {
    let i = Index::index("tests/data/dmrpp/chunked_shufzip_twoD.h5").unwrap();
    let mut r = i.reader("d_4_shufzip_chunks").unwrap();

    b.bench_local(|| r.values::<f32, _>(..).unwrap())
}

#[divan::bench]
fn read_t_float32(b: Bencher) {
    let i = Index::index("tests/data/dmrpp/t_float.h5").unwrap();
    let mut r = i.reader("d32_1").unwrap();

    b.bench_local(|| r.values::<f32, _>(..).unwrap())
}

#[divan::bench]
fn read_chunked_1d(b: Bencher) {
    let i = Index::index("tests/data/dmrpp/chunked_oneD.h5").unwrap();
    let mut r = i.reader("d_4_chunks").unwrap();

    b.bench_local(|| r.values::<f32, _>(..).unwrap())
}

#[divan::bench]
fn coads(b: Bencher) {
    let i = Index::index("tests/data/coads_climatology.nc4").unwrap();
    let mut r = i.reader("SST").unwrap();

    {
        let h = hdf5::File::open("tests/data/coads_climatology.nc4").unwrap();
        let d = h.dataset("SST").unwrap();

        assert_eq!(
            d.read_raw::<f32>().unwrap(),
            r.values::<f32, _>(..).unwrap()
        );
    }

    b.bench_local(|| r.values::<f32, _>(..).unwrap())
}

fn main() {
    divan::main();
}