Files
proxy/benches/ddos_bench.rs

44 lines
1.4 KiB
Rust
Raw Permalink Normal View History

// Copyright Sunbeam Studios 2026
// SPDX-License-Identifier: Apache-2.0
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use sunbeam_proxy::ensemble::ddos::ddos_ensemble_predict;
use sunbeam_proxy::ensemble::gen::ddos_weights;
use sunbeam_proxy::ensemble::mlp::mlp_predict_32;
use sunbeam_proxy::ensemble::tree::tree_predict;
fn bench_ensemble_ddos_full(c: &mut Criterion) {
let raw: [f32; 14] = [5.0, 10.0, 2.0, 0.1, 50.0, 0.5, 3.0, 0.3, 500.0, 2.0, 0.8, 0.7, 0.9, 0.1];
c.bench_function("ensemble::ddos full predict", |b| {
b.iter(|| ddos_ensemble_predict(black_box(&raw)))
});
}
fn bench_ensemble_ddos_tree_only(c: &mut Criterion) {
let input: [f32; 14] = [0.5; 14];
c.bench_function("ensemble::ddos tree_only", |b| {
b.iter(|| tree_predict(black_box(&ddos_weights::TREE_NODES), black_box(&input)))
});
}
fn bench_ensemble_ddos_mlp_only(c: &mut Criterion) {
let input: [f32; 14] = [0.5; 14];
c.bench_function("ensemble::ddos mlp_only", |b| {
b.iter(|| mlp_predict_32::<14>(
black_box(&ddos_weights::W1),
black_box(&ddos_weights::B1),
black_box(&ddos_weights::W2),
black_box(ddos_weights::B2),
black_box(&input),
))
});
}
criterion_group!(
benches,
bench_ensemble_ddos_full,
bench_ensemble_ddos_tree_only,
bench_ensemble_ddos_mlp_only,
);
criterion_main!(benches);