A Go library implementing Exponentially Weighted Moving Average algorithms for efficient time-series data smoothing.
EWMA is a Go library that provides Exponentially Weighted Moving Average algorithms for continuous computation of averages that bias towards recent data points. It offers computationally inexpensive and memory-efficient implementations, making it suitable for real-time monitoring and time-series analysis where recent trends are more important than distant history.
Go developers building real-time monitoring systems, performance analysis tools, or time-series data processing applications where efficient, incremental averaging of streaming data is required.
Developers choose EWMA for its specialized, performance-optimized implementations that balance low CPU/memory usage with flexibility, offering both simple constant-decay and configurable variable-decay algorithms through a consistent interface.
Exponentially Weighted Moving Average algorithms for Go.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
SimpleEWMA is optimized for low CPU and memory consumption with constant decay, making it ideal for resource-constrained real-time monitoring, as highlighted in the README for efficient incremental averaging.
VariableEWMA supports configurable decay ages with a warm-up period, allowing developers to fine-tune responsiveness versus stability for specific time windows, such as setting alpha based on desired average age.
Both SimpleEWMA and VariableEWMA conform to the MovingAverage interface, enabling easy swapping and testing of different strategies without code changes, simplifying integration into various Go applications.
The time-implicit decay model assumes fixed intervals between samples, reducing complexity for periodic data streams like system metrics, as noted in the README for straightforward use in monitoring tools.
The library cannot handle variable time intervals between samples, limiting its use for irregularly spaced data streams, a weakness explicitly admitted in the README with no current support for time-based decay.
SimpleEWMA interprets a value of zero as uninitialized, leading to sharp average jumps when actual zeros occur in data, which can distort results in datasets where zero readings are common, as warned in the documentation.
The project only accepts pull requests for minor fixes and rejects new features, which may hinder adoption for teams needing evolving or customized moving average algorithms, as stated in the contribution guidelines.