Files
fluxer/fluxer_desktop/native/encoder-ring/benches/ring.rs
T

52 lines
1.7 KiB
Rust

// SPDX-License-Identifier: AGPL-3.0-or-later
use std::hint::black_box;
use criterion::{Criterion, criterion_group, criterion_main};
use fluxer_encoder_ring::{CpuMemcpyBackend, EncoderInputRing, TextureFormat};
fn bench_submit_poll_release_cycle(c: &mut Criterion) {
let mut group = c.benchmark_group("encoder_input_ring");
group.sample_size(60);
group.bench_function("submit_poll_release_1080p_nv12", |b| {
let mut ring = EncoderInputRing::new(CpuMemcpyBackend::new());
ring.initialise(1920, 1080, TextureFormat::Nv12)
.expect("init");
b.iter(|| {
ring.submit(|_h| {}).expect("submit");
let ready = ring.poll_next_ready().expect("ready");
black_box(&ready);
ring.release_completed(ready).expect("release");
});
});
group.finish();
}
fn bench_submit_only_drained_after(c: &mut Criterion) {
let mut group = c.benchmark_group("encoder_input_ring");
group.sample_size(60);
group.bench_function("submit_then_drain_eight_1080p_nv12", |b| {
b.iter(|| {
let mut ring = EncoderInputRing::new(CpuMemcpyBackend::new());
ring.initialise(1920, 1080, TextureFormat::Nv12)
.expect("init");
for _ in 0..8 {
ring.submit(|_h| {}).expect("submit");
}
for _ in 0..8 {
let ready = ring.poll_next_ready().expect("ready");
ring.release_completed(ready).expect("release");
}
black_box(ring.metrics());
});
});
group.finish();
}
criterion_group!(
benches,
bench_submit_poll_release_cycle,
bench_submit_only_drained_after
);
criterion_main!(benches);