46 lines
1.5 KiB
Rust
46 lines
1.5 KiB
Rust
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
// Copyright by contributors to this project.
|
|
// SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
use criterion::{BatchSize, BenchmarkId, Criterion, Throughput};
|
|
use mls_rs::test_utils::benchmarks::{load_group_states, BENCH_CIPHER_SUITE};
|
|
use rand::RngCore;
|
|
|
|
fn bench(c: &mut Criterion) {
|
|
let group_states = load_group_states().pop().unwrap();
|
|
|
|
let mut bytes = vec![0; 1000000];
|
|
rand::thread_rng().fill_bytes(&mut bytes);
|
|
|
|
let bytes = &bytes;
|
|
let mut n = 100;
|
|
let mut bench_group = c.benchmark_group("group_application");
|
|
|
|
while n <= 1000000 {
|
|
bench_group.throughput(Throughput::Bytes(n as u64));
|
|
bench_group.bench_with_input(
|
|
BenchmarkId::new(format!("{BENCH_CIPHER_SUITE:?}"), n),
|
|
&n,
|
|
|b, _| {
|
|
b.iter_batched_ref(
|
|
|| group_states.clone(),
|
|
move |group_states| {
|
|
let msg = group_states
|
|
.sender
|
|
.encrypt_application_message(&bytes[..n], vec![])
|
|
.unwrap();
|
|
|
|
group_states.receiver.process_incoming_message(msg).unwrap();
|
|
},
|
|
BatchSize::SmallInput,
|
|
)
|
|
},
|
|
);
|
|
|
|
n *= 10;
|
|
}
|
|
bench_group.finish();
|
|
}
|
|
|
|
criterion::criterion_group!(benches, bench);
|
|
criterion::criterion_main!(benches);
|