#metrics #performance #statistics #real-time

running-average

Calculate running average with specified time window width using constant memory

1 unstable release

Uses old Rust 2015

0.1.0 Oct 15, 2018

#760 in Machine learning

Download history 60/week @ 2023-12-04 125/week @ 2023-12-11 56/week @ 2023-12-18 20/week @ 2024-01-08 33/week @ 2024-01-15 70/week @ 2024-01-22 43/week @ 2024-01-29 321/week @ 2024-02-05 37/week @ 2024-02-12 23/week @ 2024-02-19 73/week @ 2024-02-26 41/week @ 2024-03-04 33/week @ 2024-03-11 24/week @ 2024-03-18

171 downloads per month
Used in 2 crates

MIT license

16KB
264 lines

Rust crate that provides RunningAverage and RealTimeRunningAverage types that allow to calculate running average with specified time window width using constant memory.

The RunningAverage type can be used when processing streams of temporal data while RealTimeRunningAverage can be used when measured events are happening in real time.

For example RealTimeRunningAverage can be used to measure download throughput by inserting how many bytes were transferred.

use running_average::RealTimeRunningAverage;

// By default use 8 second window with 16 accumulators
let mut tw = RealTimeRunningAverage::default();

// Connect and start downloading
// Got 2KB of data
tw.insert(2000);

// Waiting for more data
// Got 1KB of data
tw.insert(1000);

// Print average transfer for last 8 seconds
println!("{}", tw.measurement());

lib.rs:

RunningAverage and RealTimeRunningAverage types allow to calculate running average with specified time window width using constant memory.

The RunningAverage type can be used when processing streams of temporal data while RealTimeRunningAverage can be used when measured events are happening in real time.

For example RealTimeRunningAverage can be used to measure download throughput by inserting how many bytes were transferred.

use running_average::RealTimeRunningAverage;

// By default use 8 second window with 16 accumulators
let mut tw = RealTimeRunningAverage::default();

// Connect and start downloading
// Got 2KB of data
tw.insert(2000);

// Waiting for more data
// Got 1KB of data
tw.insert(1000);

// Print average transfer for last 8 seconds
println!("{}", tw.measurement());

No runtime deps