Files
fluxer-desktop-patched/fluxer_desktop/native/audio-timing/benches/smoother.rs
T
brenden 682afacd30 Add native self-hosted instance connection to fluxer_desktop
Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 +
tools/ci) with a "Connect to a Different Server" menu item and popout
that lets the desktop app switch to any self-hosted Fluxer instance,
plus fixes for well-known discovery on single-domain self-hosted
deployments and a false-positive ERR_ABORTED on same-origin client
redirects during the switch. Defaults to chat.fluxr.chat and uses an
isolated userData directory from the official build.
2026-07-01 18:22:43 -04:00

85 lines
2.4 KiB
Rust

// SPDX-License-Identifier: AGPL-3.0-or-later
use std::hint::black_box;
use criterion::{Criterion, criterion_group, criterion_main};
use fluxer_audio_timing::{AudioTimingSmoother, SmootherInput, SourceGainRamp, StaleSourceTracker};
const SR: u32 = 48_000;
const FRAMES_PER_TICK: u32 = 960;
const PERIOD_NS: u64 = 20_000_000;
fn bench_smoother_steady_snap(c: &mut Criterion) {
let mut group = c.benchmark_group("audio_timing_smoother");
group.sample_size(100);
group.bench_function("snap_steady_state", |b| {
let mut s = AudioTimingSmoother::new(1, SR).expect("ok");
let _ = s
.adjust(SmootherInput {
media_ts_ns: 0,
frames: FRAMES_PER_TICK,
wall_ns: 0,
})
.expect("ok");
let mut n: u64 = 1;
b.iter(|| {
let result = s
.adjust(SmootherInput {
media_ts_ns: n * PERIOD_NS,
frames: FRAMES_PER_TICK,
wall_ns: n * PERIOD_NS,
})
.expect("ok");
n = n.wrapping_add(1);
black_box(result);
});
});
group.finish();
}
fn bench_ramp_advance(c: &mut Criterion) {
let mut group = c.benchmark_group("audio_timing_ramp");
group.sample_size(100);
group.bench_function("advance_and_query_gain", |b| {
let mut r = SourceGainRamp::new();
b.iter(|| {
r.advance_tick();
let g = r.current_gain_q15();
if r.is_complete() {
r.reset();
}
black_box(g);
});
});
group.finish();
}
fn bench_stale_check(c: &mut Criterion) {
let mut group = c.benchmark_group("audio_timing_eviction");
group.sample_size(100);
group.bench_function("is_stale_lookup", |b| {
let mut t = StaleSourceTracker::new(16).expect("ok");
for n in 1..=16u64 {
t.register_source(n, n * 1_000).expect("ok");
}
let threshold = 5_000_000_000u64;
let mut now: u64 = 1_000_000_000;
b.iter(|| {
let stale = t.is_stale(8, now, threshold).expect("ok");
now = now.wrapping_add(PERIOD_NS);
black_box(stale);
});
});
group.finish();
}
criterion_group!(
benches,
bench_smoother_steady_snap,
bench_ramp_advance,
bench_stale_check
);
criterion_main!(benches);