pub struct TimingStats {
pub count: usize,
pub min_ns: u64,
pub max_ns: u64,
pub mean_ns: f64,
pub std_dev_ns: f64,
pub p50_ns: u64,
pub p95_ns: u64,
pub p99_ns: u64,
pub total_ns: u64,
}Expand description
Timing statistics
Fields§
§count: usize§min_ns: u64§max_ns: u64§mean_ns: f64§std_dev_ns: f64§p50_ns: u64§p95_ns: u64§p99_ns: u64§total_ns: u64Implementations§
Source§impl TimingStats
impl TimingStats
Sourcepub fn total_duration(&self) -> Duration
pub fn total_duration(&self) -> Duration
Total time as Duration
Sourcepub fn ops_per_sec(&self) -> f64
pub fn ops_per_sec(&self) -> f64
Throughput in operations per second
Examples found in repository?
examples/performance_metrics.rs (line 65)
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 mean_duration(&self) -> Duration
pub fn mean_duration(&self) -> Duration
Mean time as Duration
Sourcepub fn median_duration(&self) -> Duration
pub fn median_duration(&self) -> Duration
Median time as Duration
Trait Implementations§
Source§impl Clone for TimingStats
impl Clone for TimingStats
Source§fn clone(&self) -> TimingStats
fn clone(&self) -> TimingStats
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 moreSource§impl Debug for TimingStats
impl Debug for TimingStats
Source§impl Default for TimingStats
impl Default for TimingStats
Source§fn default() -> TimingStats
fn default() -> TimingStats
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for TimingStats
impl RefUnwindSafe for TimingStats
impl Send for TimingStats
impl Sync for TimingStats
impl Unpin for TimingStats
impl UnwindSafe for TimingStats
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