diff --git a/Cargo.toml b/Cargo.toml index a6fa65c..38f4cee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,4 +18,12 @@ exclude = ["/.*"] parking = "2.0.0" [dev-dependencies] +criterion = "0.3.4" waker-fn = "1" + +[[bench]] +name = "bench" +harness = false + +[lib] +bench = false \ No newline at end of file diff --git a/benches/bench.rs b/benches/bench.rs new file mode 100644 index 0000000..26840e5 --- /dev/null +++ b/benches/bench.rs @@ -0,0 +1,26 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use event_listener::Event; + +const COUNT: usize = 8000; + +fn bench_events(c: &mut Criterion) { + c.bench_function("notify_and_wait", |b| { + let ev = Event::new(); + b.iter(|| { + let mut handles = Vec::with_capacity(COUNT); + + for _ in 0..COUNT { + handles.push(ev.listen()); + } + + ev.notify(COUNT); + + for handle in handles { + handle.wait(); + } + }); + }); +} + +criterion_group!(benches, bench_events); +criterion_main!(benches);