performance_metrics/
performance_metrics.rs1use embeddenator_testkit::*;
6use rand::SeedableRng;
7use std::thread;
8use std::time::Duration;
9
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 let mut metrics = TestMetrics::new("example_operations");
15
16 println!("1. Timing vector generation...");
18 let mut rng = rand::rngs::StdRng::seed_from_u64(42);
19
20 for _ in 0..10 {
21 metrics.time_operation(|| {
22 let _vec = random_sparse_vec(&mut rng, 10000, 200);
23 });
24 }
25
26 println!(" Completed 10 operations");
27 let stats = metrics.timing_stats();
28 println!(" Mean: {:.2}µs", stats.mean_ns / 1000.0);
29 println!(" Median: {:.2}µs", stats.p50_ns as f64 / 1000.0);
30 println!(" P95: {:.2}µs", stats.p95_ns as f64 / 1000.0);
31
32 println!("\n2. Recording custom metrics...");
34 metrics.record_metric("accuracy", 0.95);
35 metrics.record_metric("precision", 0.92);
36 metrics.record_metric("recall", 0.89);
37 metrics.inc_op("validation_checks");
38
39 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); }
44
45 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 println!("\n5. Timing with simulated work...");
51 let mut work_metrics = TestMetrics::new("simulated_work");
52
53 for sleep_ms in [1, 2, 5, 10, 20] {
54 work_metrics.time_operation(|| {
55 thread::sleep(Duration::from_millis(sleep_ms));
56 });
57 }
58
59 let work_stats = work_metrics.timing_stats();
60 println!(" Operations: {}", work_stats.count);
61 println!(
62 " Total time: {:.2}ms",
63 work_stats.total_ns as f64 / 1_000_000.0
64 );
65 println!(" Throughput: {:.2} ops/sec", work_stats.ops_per_sec());
66
67 println!("\n✅ Performance metrics example complete!");
68}