Files
proxy/benches/ddos_bench.rs
Sienna Meridian Satterwhite 385e9d4c59 chore: add SPDX copyright headers and update license year
Add `// Copyright Sunbeam Studios 2026` and `// SPDX-License-Identifier:
Apache-2.0` headers to all source files missing them. Update LICENSE
copyright year, Dockerfile copyright header, and .dockerignore for new
project structure (lean4/, docs/, training artifacts).

Signed-off-by: Sienna Meridian Satterwhite <sienna@sunbeam.pt>
2026-03-10 23:38:21 +00:00

44 lines
1.4 KiB
Rust

// 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);