Add send_events benchmark

This commit is contained in:
Hocuri
2022-05-05 18:49:06 +02:00
committed by Septias
parent c3d99e1016
commit 86fc553294
3 changed files with 47 additions and 2 deletions

42
benches/send_events.rs Normal file
View File

@@ -0,0 +1,42 @@
use criterion::async_executor::AsyncStdExecutor;
use criterion::{criterion_group, criterion_main, Criterion};
use deltachat::context::Context;
use deltachat::{info, Event, EventType};
use tempfile::tempdir;
async fn send_events_benchmark(context: &Context) {
let emitter = context.get_event_emitter();
for _i in 0..1_000_000 {
info!(context, "interesting event...");
}
info!(context, "DONE");
loop {
match emitter.recv().await.unwrap() {
Event {
typ: EventType::Info(info),
..
} if info.contains("DONE") => {
break;
}
_ => {}
}
}
}
fn criterion_benchmark(c: &mut Criterion) {
let dir = tempdir().unwrap();
let dbfile = dir.path().join("db.sqlite");
let id = 100;
let context =
async_std::task::block_on(async { Context::new(dbfile.into(), id).await.unwrap() });
c.bench_function("Sending 1000 events", |b| {
b.to_async(AsyncStdExecutor)
.iter(|| send_events_benchmark(&context))
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);