Add search_msgs benchmark

This commit is contained in:
link2xt
2021-04-17 22:34:40 +03:00
parent 6d4ec75a7b
commit ef89bc64c9
2 changed files with 33 additions and 0 deletions

View File

@@ -107,6 +107,10 @@ harness = false
name = "contacts"
harness = false
[[bench]]
name = "search_msgs"
harness = false
[features]
default = []
internals = []

29
benches/search_msgs.rs Normal file
View File

@@ -0,0 +1,29 @@
use async_std::task::block_on;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use deltachat::context::Context;
use std::path::Path;
async fn search_benchmark(path: impl AsRef<Path>) {
let dbfile = path.as_ref();
let id = 100;
let context = Context::new("FakeOS".into(), dbfile.into(), id)
.await
.unwrap();
for _ in 0..10u32 {
context.search_msgs(None, "hello").await.unwrap();
}
}
fn criterion_benchmark(c: &mut Criterion) {
// To enable this benchmark, set `DELTACHAT_BENCHMARK_DATABASE` to some large database with many
// messages, such as your primary account.
if let Ok(path) = std::env::var("DELTACHAT_BENCHMARK_DATABASE") {
c.bench_function("search hello", |b| {
b.iter(|| block_on(async { search_benchmark(black_box(&path)).await }))
});
}
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);