1 // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 // Copyright by contributors to this project.
3 // SPDX-License-Identifier: (Apache-2.0 OR MIT)
4 
5 use mls_rs::{test_utils::benchmarks::load_group_states, CipherSuite};
6 
7 use criterion::{BenchmarkId, Criterion};
8 
bench_serialize(c: &mut Criterion)9 fn bench_serialize(c: &mut Criterion) {
10     use criterion::BatchSize;
11 
12     let cs = CipherSuite::CURVE25519_AES128;
13     let group_states = load_group_states(cs);
14     let mut bench_group = c.benchmark_group("group_serialize");
15 
16     for (i, group_states) in group_states.into_iter().enumerate() {
17         bench_group.bench_with_input(BenchmarkId::new(format!("{cs:?}"), i), &i, |b, _| {
18             b.iter_batched_ref(
19                 || group_states.sender.clone(),
20                 move |sender| sender.write_to_storage().unwrap(),
21                 BatchSize::SmallInput,
22             )
23         });
24     }
25 
26     bench_group.finish();
27 }
28 
29 criterion::criterion_group!(benches, bench_serialize);
30 criterion::criterion_main!(benches);
31