pub struct TestMetrics {
pub name: String,
pub timings_ns: Vec<u64>,
pub op_counts: HashMap<String, u64>,
pub custom_metrics: HashMap<String, f64>,
pub memory_samples: Vec<usize>,
pub error_count: u64,
pub warning_count: u64,
/* private fields */
}Expand description
Granular performance metrics for test operations
Fields§
§name: StringOperation name for reporting
timings_ns: Vec<u64>Individual timing samples (nanoseconds)
op_counts: HashMap<String, u64>Operation counts by category
custom_metrics: HashMap<String, f64>Custom numeric metrics
memory_samples: Vec<usize>Memory snapshots (bytes)
error_count: u64Error/warning counts
warning_count: u64Implementations§
Source§impl TestMetrics
impl TestMetrics
Sourcepub fn new(name: &str) -> Self
pub fn new(name: &str) -> Self
Create new metrics collector for named operation
Examples found in repository?
examples/performance_metrics.rs (line 14)
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 // Create test metrics
14 let mut metrics = TestMetrics::new("example_operations");
15
16 // Time a simple operation
17 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 // Record custom metrics
33 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 // Record memory usage
40 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); // Simulate growing memory usage
43 }
44
45 // Display full summary
46 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 // Test timing with actual work
50 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}Sourcepub fn start_timing(&mut self)
pub fn start_timing(&mut self)
Start timing measurement
Sourcepub fn stop_timing(&mut self)
pub fn stop_timing(&mut self)
Stop timing and record sample
Sourcepub fn time_operation<F, R>(&mut self, f: F) -> Rwhere
F: FnOnce() -> R,
pub fn time_operation<F, R>(&mut self, f: F) -> Rwhere
F: FnOnce() -> R,
Record a timed operation with closure
Examples found in repository?
examples/performance_metrics.rs (lines 21-23)
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 // Create test metrics
14 let mut metrics = TestMetrics::new("example_operations");
15
16 // Time a simple operation
17 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 // Record custom metrics
33 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 // Record memory usage
40 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); // Simulate growing memory usage
43 }
44
45 // Display full summary
46 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 // Test timing with actual work
50 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}Sourcepub fn inc_op(&mut self, category: &str)
pub fn inc_op(&mut self, category: &str)
Increment operation counter
Examples found in repository?
examples/performance_metrics.rs (line 37)
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 // Create test metrics
14 let mut metrics = TestMetrics::new("example_operations");
15
16 // Time a simple operation
17 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 // Record custom metrics
33 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 // Record memory usage
40 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); // Simulate growing memory usage
43 }
44
45 // Display full summary
46 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 // Test timing with actual work
50 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}Sourcepub fn record_metric(&mut self, name: &str, value: f64)
pub fn record_metric(&mut self, name: &str, value: f64)
Record custom metric
Examples found in repository?
examples/performance_metrics.rs (line 34)
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 // Create test metrics
14 let mut metrics = TestMetrics::new("example_operations");
15
16 // Time a simple operation
17 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 // Record custom metrics
33 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 // Record memory usage
40 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); // Simulate growing memory usage
43 }
44
45 // Display full summary
46 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 // Test timing with actual work
50 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}Sourcepub fn record_memory(&mut self, bytes: usize)
pub fn record_memory(&mut self, bytes: usize)
Record memory usage
Examples found in repository?
examples/performance_metrics.rs (line 42)
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 // Create test metrics
14 let mut metrics = TestMetrics::new("example_operations");
15
16 // Time a simple operation
17 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 // Record custom metrics
33 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 // Record memory usage
40 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); // Simulate growing memory usage
43 }
44
45 // Display full summary
46 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 // Test timing with actual work
50 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}Sourcepub fn record_operation(&mut self, count: usize)
pub fn record_operation(&mut self, count: usize)
Record operation count
Sourcepub fn record_error(&mut self)
pub fn record_error(&mut self)
Record an error
Sourcepub fn record_warning(&mut self)
pub fn record_warning(&mut self)
Record a warning
Sourcepub fn timing_stats(&self) -> TimingStats
pub fn timing_stats(&self) -> TimingStats
Get timing statistics
Examples found in repository?
examples/performance_metrics.rs (line 27)
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 // Create test metrics
14 let mut metrics = TestMetrics::new("example_operations");
15
16 // Time a simple operation
17 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 // Record custom metrics
33 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 // Record memory usage
40 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); // Simulate growing memory usage
43 }
44
45 // Display full summary
46 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 // Test timing with actual work
50 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}Sourcepub fn summary(&self) -> String
pub fn summary(&self) -> String
Generate summary report
Examples found in repository?
examples/performance_metrics.rs (line 47)
10fn main() {
11 println!("=== Embeddenator TestKit - Performance Metrics ===\n");
12
13 // Create test metrics
14 let mut metrics = TestMetrics::new("example_operations");
15
16 // Time a simple operation
17 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 // Record custom metrics
33 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 // Record memory usage
40 println!("\n3. Recording memory snapshots...");
41 for i in 1..=5 {
42 metrics.record_memory(i * 1024 * 1024); // Simulate growing memory usage
43 }
44
45 // Display full summary
46 println!("\n4. Full metrics summary:");
47 println!("{}", metrics.summary());
48
49 // Test timing with actual work
50 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}Trait Implementations§
Source§impl Clone for TestMetrics
impl Clone for TestMetrics
Source§fn clone(&self) -> TestMetrics
fn clone(&self) -> TestMetrics
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for TestMetrics
impl RefUnwindSafe for TestMetrics
impl Send for TestMetrics
impl Sync for TestMetrics
impl Unpin for TestMetrics
impl UnwindSafe for TestMetrics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more