From 771db61ee440bef2ba63c9518d2064beb3e26ef0 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 10 Nov 2024 22:18:46 +0000 Subject: [PATCH] events: slightly rework benches Signed-off-by: Jason Volk --- crates/ruma-events/Cargo.toml | 2 +- .../{event_deserialize.rs => event_serde.rs} | 53 ++++++++++++++++--- 2 files changed, 46 insertions(+), 9 deletions(-) rename crates/ruma-events/benches/{event_deserialize.rs => event_serde.rs} (59%) diff --git a/crates/ruma-events/Cargo.toml b/crates/ruma-events/Cargo.toml index 3e868551..781e5781 100644 --- a/crates/ruma-events/Cargo.toml +++ b/crates/ruma-events/Cargo.toml @@ -92,7 +92,7 @@ maplit = { workspace = true } trybuild = "1.0.71" [[bench]] -name = "event_deserialize" +name = "event_serde" harness = false required-features = ["criterion"] diff --git a/crates/ruma-events/benches/event_deserialize.rs b/crates/ruma-events/benches/event_serde.rs similarity index 59% rename from crates/ruma-events/benches/event_deserialize.rs rename to crates/ruma-events/benches/event_serde.rs index 7c7a5215..1c3408a0 100644 --- a/crates/ruma-events/benches/event_deserialize.rs +++ b/crates/ruma-events/benches/event_serde.rs @@ -47,30 +47,51 @@ fn power_levels() -> serde_json::Value { }) } -fn deserialize_any_room_event(c: &mut Criterion) { +fn interpret_any_room_event(c: &mut Criterion) { let json_data = power_levels(); - c.bench_function("deserialize to `AnyTimelineEvent`", |b| { + c.bench_function("interpret `AnyTimelineEvent`", |b| { b.iter(|| { let _ = serde_json::from_value::(json_data.clone()).unwrap(); }) }); } -fn deserialize_any_state_event(c: &mut Criterion) { +fn deserialize_any_room_event(c: &mut Criterion) { + let json_value = power_levels(); + let json_data = serde_json::to_vec(&json_value).unwrap(); + + c.bench_function("deserialize `AnyTimelineEvent`", |b| { + b.iter(|| { + let _ = serde_json::from_slice::(&json_data).unwrap(); + }) + }); +} + +fn serialize_any_room_event(c: &mut Criterion) { let json_data = power_levels(); - c.bench_function("deserialize to `AnyStateEvent`", |b| { + c.bench_function("serialize `AnyTimelineEvent`", |b| { + b.iter(|| { + let _ = serde_json::to_vec(&json_data).unwrap(); + }) + }); +} + +fn interpret_any_state_event(c: &mut Criterion) { + let json_data = power_levels(); + + c.bench_function("interpret `AnyStateEvent`", |b| { b.iter(|| { let _ = serde_json::from_value::(json_data.clone()).unwrap(); }) }); } -fn deserialize_specific_event(c: &mut Criterion) { +fn interpret_specific_event(c: &mut Criterion) { let json_data = power_levels(); - c.bench_function("deserialize to `OriginalStateEvent`", |b| { + c.bench_function("interpret `OriginalStateEvent`", |b| { b.iter(|| { let _ = serde_json::from_value::>( json_data.clone(), @@ -80,11 +101,27 @@ fn deserialize_specific_event(c: &mut Criterion) { }); } +fn deserialize_raw_specific_event(c: &mut Criterion) { + let json_data = power_levels(); + let json_data: Raw> = + serde_json::from_value(json_data).unwrap(); + + c.bench_function("deserialize Raw<_> to `OriginalStateEvent`", |b| { + b.iter(|| { + let _: OriginalStateEvent = + json_data.clone().deserialize().unwrap(); + }) + }); +} + criterion_group!( benches, + interpret_any_room_event, + serialize_any_room_event, deserialize_any_room_event, - deserialize_any_state_event, - deserialize_specific_event + interpret_any_state_event, + interpret_specific_event, + deserialize_raw_specific_event, ); criterion_main!(benches);