benches: Add a benchmark for the missing session collecting
parent
a32f9187e6
commit
d4e847f02f
|
@ -40,6 +40,13 @@ fn keys_claim_response() -> claim_keys::Response {
|
||||||
claim_keys::Response::try_from(data).expect("Can't parse the keys upload response")
|
claim_keys::Response::try_from(data).expect("Can't parse the keys upload response")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn huge_keys_query_resopnse() -> get_keys::Response {
|
||||||
|
let data = include_bytes!("./keys_query_2000_members.json");
|
||||||
|
let data: Value = serde_json::from_slice(data).unwrap();
|
||||||
|
let data = response_from_file(&data);
|
||||||
|
get_keys::Response::try_from(data).expect("Can't parse the keys query response")
|
||||||
|
}
|
||||||
|
|
||||||
pub fn keys_query(c: &mut Criterion) {
|
pub fn keys_query(c: &mut Criterion) {
|
||||||
let runtime = Builder::new_multi_thread()
|
let runtime = Builder::new_multi_thread()
|
||||||
.build()
|
.build()
|
||||||
|
@ -258,6 +265,58 @@ pub fn room_key_sharing(c: &mut Criterion) {
|
||||||
group.finish()
|
group.finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn devices_missing_sessions_collecting(c: &mut Criterion) {
|
||||||
|
let runtime = Builder::new_multi_thread()
|
||||||
|
.build()
|
||||||
|
.expect("Can't create runtime");
|
||||||
|
|
||||||
|
let machine = OlmMachine::new(&alice_id(), &alice_device_id());
|
||||||
|
let response = huge_keys_query_resopnse();
|
||||||
|
let uuid = Uuid::new_v4();
|
||||||
|
let users: Vec<UserId> = response.device_keys.keys().cloned().collect();
|
||||||
|
|
||||||
|
let count = response
|
||||||
|
.device_keys
|
||||||
|
.values()
|
||||||
|
.fold(0, |acc, d| acc + d.len());
|
||||||
|
|
||||||
|
let mut group = c.benchmark_group("Devices missing sessions collecting");
|
||||||
|
group.throughput(Throughput::Elements(count as u64));
|
||||||
|
|
||||||
|
let name = format!("{} devices", count);
|
||||||
|
|
||||||
|
runtime
|
||||||
|
.block_on(machine.mark_request_as_sent(&uuid, &response))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
group.bench_function(BenchmarkId::new("memory store", &name), |b| {
|
||||||
|
b.to_async(&runtime).iter_with_large_drop(|| async {
|
||||||
|
machine.get_missing_sessions(users.iter()).await.unwrap()
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
let dir = tempfile::tempdir().unwrap();
|
||||||
|
let machine = runtime
|
||||||
|
.block_on(OlmMachine::new_with_default_store(
|
||||||
|
&alice_id(),
|
||||||
|
&alice_device_id(),
|
||||||
|
dir.path(),
|
||||||
|
None,
|
||||||
|
))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
runtime
|
||||||
|
.block_on(machine.mark_request_as_sent(&uuid, &response))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
group.bench_function(BenchmarkId::new("sled store", &name), |b| {
|
||||||
|
b.to_async(&runtime)
|
||||||
|
.iter(|| async { machine.get_missing_sessions(users.iter()).await.unwrap() })
|
||||||
|
});
|
||||||
|
|
||||||
|
group.finish()
|
||||||
|
}
|
||||||
|
|
||||||
fn criterion() -> Criterion {
|
fn criterion() -> Criterion {
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
let criterion = Criterion::default().with_profiler(perf::FlamegraphProfiler::new(100));
|
let criterion = Criterion::default().with_profiler(perf::FlamegraphProfiler::new(100));
|
||||||
|
@ -270,6 +329,6 @@ fn criterion() -> Criterion {
|
||||||
criterion_group! {
|
criterion_group! {
|
||||||
name = benches;
|
name = benches;
|
||||||
config = criterion();
|
config = criterion();
|
||||||
targets = keys_query, keys_claiming, room_key_sharing
|
targets = keys_query, keys_claiming, room_key_sharing, devices_missing_sessions_collecting,
|
||||||
}
|
}
|
||||||
criterion_main!(benches);
|
criterion_main!(benches);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue