From 5c1ae634fb9767ce0c0a3e115649f871238bc402 Mon Sep 17 00:00:00 2001 From: John Nunley Date: Fri, 9 Sep 2022 07:30:51 -0700 Subject: [PATCH] Add basic benchmarks (#31) --- Cargo.toml | 8 ++++++++ benches/bench.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 benches/bench.rs 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);