public class FixedSizeSlidingWindowMetrics extends java.lang.Object implements Metrics
Metrics
implementation is backed by a sliding window that aggregates only the last
N
calls.
The sliding window is implemented with a circular array of N
measurements. If the time
window size is 10, the circular array has always 10 measurements.
The sliding window incrementally updates a total aggregation. The total aggregation is updated incrementally when a new call outcome is recorded. When the oldest measurement is evicted, the measurement is subtracted from the total aggregation. (Subtract-on-Evict)
The time to retrieve a Snapshot is constant 0(1), since the Snapshot is pre-aggregated and is independent of the window size. The space requirement (memory consumption) of this implementation should be O(n).
Metrics.Outcome
Constructor and Description |
---|
FixedSizeSlidingWindowMetrics(int windowSize)
Creates a new
FixedSizeSlidingWindowMetrics with the given window size. |
Modifier and Type | Method and Description |
---|---|
Snapshot |
getSnapshot()
Returns a snapshot.
|
Snapshot |
record(long duration,
java.util.concurrent.TimeUnit durationUnit,
Metrics.Outcome outcome)
Records a call.
|
public FixedSizeSlidingWindowMetrics(int windowSize)
FixedSizeSlidingWindowMetrics
with the given window size.windowSize
- the window sizepublic Snapshot record(long duration, java.util.concurrent.TimeUnit durationUnit, Metrics.Outcome outcome)
Metrics
public Snapshot getSnapshot()
Metrics
getSnapshot
in interface Metrics