faern / oneshot

Oneshot Rust channel working both in and between sync and async environments
Apache License 2.0
80 stars 9 forks source link

Can Criterion measure things after doing a per-iteration setup? #8

Open faern opened 4 years ago

faern commented 4 years ago

Currently we have one benchmark to measure the time it takes to create a channel and another one to measure how long it takes to create a channel plus send a message on it. Because the channel is consumed by the send we need a new channel for each iteration. But does Criterion allow doing a per-iteration setup and then start timing? Something like:

b.iter(|| {
    let (sender, _receiver) = oneshot::channel();
    // Start measure time here!
    sender.send(black_box(value_fn())).unwrap()
});

If not, does it allow pairing one benchmark with another and say that the result of one should be subtracted from the other before presenting it? 🤷