1use reflex_rs::{GuardrailSuite, Reflex, SemanticVectorEncoder};
2use std::env;
3use std::time::Instant;
4
5fn main() {
6 let args: Vec<String> = env::args().collect();
7 let iters: usize = args.get(1).and_then(|s| s.parse().ok()).unwrap_or(5000);
8 let sample = "Urgent: Suspicious activity on your account. Click here to cancel wire #8129!";
9
10 let rx = Reflex::new();
11 let encoder = SemanticVectorEncoder::new();
12 let suite = GuardrailSuite::new();
13
14 let t0 = Instant::now();
16 for _ in 0..iters {
17 let _ = encoder.encode(sample);
18 }
19 let t_enc = t0.elapsed().as_secs_f64();
20
21 let t0 = Instant::now();
23 for _ in 0..iters {
24 let _ = rx.noul("Is this a security threat or phishing scam?", sample);
25 }
26 let t_noul = t0.elapsed().as_secs_f64();
27
28 let t0 = Instant::now();
30 for _ in 0..iters {
31 let _ = suite.evaluate(sample);
32 }
33 let t_guard = t0.elapsed().as_secs_f64();
34
35 let encode_us = (t_enc / iters as f64) * 1_000_000.0;
36 let noul_us = (t_noul / iters as f64) * 1_000_000.0;
37 let guard_us = (t_guard / iters as f64) * 1_000_000.0;
38 let throughput_ops = iters as f64 / t_noul;
39
40 println!(
41 r#"{{"encode_us": {:.2}, "noul_us": {:.2}, "guard_us": {:.2}, "throughput_ops": {:.2}}}"#,
42 encode_us, noul_us, guard_us, throughput_ops
43 );
44}