use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
use futures_util::future::{self, FutureExt};
use std::hint::black_box;
fn bench(c: &mut Criterion) {
let rt = tokio::runtime::Builder::new_current_thread()
.build()
.unwrap();
let mut group = c.benchmark_group("cluster_read_alloc");
for &n in &[3usize, 6, 16, 100] {
group.bench_with_input(BenchmarkId::from_parameter(n), &n, |b, &n| {
b.iter(|| {
rt.block_on(async {
let futures = (0..n).map(|i| std::future::ready(i as u8).boxed());
let (result, idx, rest) = future::select_all(futures).await;
black_box((result, idx, rest.len()));
})
})
});
}
group.finish();
}
criterion_group!(benches, bench);
criterion_main!(benches);