diff --git a/Cargo.toml b/Cargo.toml index 6d7f7d78..a98d4939 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,6 +64,10 @@ chrono = "0.4" criterion = "0.5.1" tempfile = "3" +[[bench]] +name = "array_subset" +harness = false + [[bench]] name = "array_uncompressed" harness = false diff --git a/benches/array_subset.rs b/benches/array_subset.rs new file mode 100644 index 00000000..69668a12 --- /dev/null +++ b/benches/array_subset.rs @@ -0,0 +1,26 @@ +use criterion::{ + black_box, criterion_group, criterion_main, AxisScale, BenchmarkId, Criterion, + PlotConfiguration, Throughput, +}; +use zarrs::array_subset::ArraySubset; + +fn array_subset_indices_iterator(c: &mut Criterion) { + let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic); + let mut group = c.benchmark_group(format!("array_subset_indices_iterator")); + group.plot_config(plot_config); + + for array_subset_size in [4, 16, 64, 256] { + let array_subset = ArraySubset::new_with_shape(vec![array_subset_size; 3]); + group.throughput(Throughput::Elements(array_subset.num_elements())); + group.bench_function(BenchmarkId::new("size", array_subset_size), |b| { + b.iter(|| { + array_subset.iter_indices().for_each(|indices| { + black_box(indices.first().unwrap()); + }) + }); + }); + } +} + +criterion_group!(benches, array_subset_indices_iterator); +criterion_main!(benches);