Package com.codahale.metrics
Class ExponentiallyDecayingReservoir
- java.lang.Object
-
- com.codahale.metrics.ExponentiallyDecayingReservoir
-
- All Implemented Interfaces:
Reservoir
public class ExponentiallyDecayingReservoir extends Object implements Reservoir
An exponentially-decaying random reservoir oflong
s. Uses Cormode et al's forward-decaying priority reservoir sampling method to produce a statistically representative sampling reservoir, exponentially biased towards newer entries.
-
-
Constructor Summary
Constructors Constructor Description ExponentiallyDecayingReservoir()
Creates a newExponentiallyDecayingReservoir
of 1028 elements, which offers a 99.9% confidence level with a 5% margin of error assuming a normal distribution, and an alpha factor of 0.015, which heavily biases the reservoir to the past 5 minutes of measurements.ExponentiallyDecayingReservoir(int size, double alpha)
Creates a newExponentiallyDecayingReservoir
.ExponentiallyDecayingReservoir(int size, double alpha, Clock clock)
Creates a newExponentiallyDecayingReservoir
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Snapshot
getSnapshot()
Returns a snapshot of the reservoir's values.int
size()
Returns the number of values recorded.void
update(long value)
Adds a new recorded value to the reservoir.void
update(long value, long timestamp)
Adds an old value with a fixed timestamp to the reservoir.
-
-
-
Constructor Detail
-
ExponentiallyDecayingReservoir
public ExponentiallyDecayingReservoir()
Creates a newExponentiallyDecayingReservoir
of 1028 elements, which offers a 99.9% confidence level with a 5% margin of error assuming a normal distribution, and an alpha factor of 0.015, which heavily biases the reservoir to the past 5 minutes of measurements.
-
ExponentiallyDecayingReservoir
public ExponentiallyDecayingReservoir(int size, double alpha)
Creates a newExponentiallyDecayingReservoir
.- Parameters:
size
- the number of samples to keep in the sampling reservoiralpha
- the exponential decay factor; the higher this is, the more biased the reservoir will be towards newer values
-
ExponentiallyDecayingReservoir
public ExponentiallyDecayingReservoir(int size, double alpha, Clock clock)
Creates a newExponentiallyDecayingReservoir
.- Parameters:
size
- the number of samples to keep in the sampling reservoiralpha
- the exponential decay factor; the higher this is, the more biased the reservoir will be towards newer valuesclock
- the clock used to timestamp samples and track rescaling
-
-
Method Detail
-
size
public int size()
Description copied from interface:Reservoir
Returns the number of values recorded.
-
update
public void update(long value)
Description copied from interface:Reservoir
Adds a new recorded value to the reservoir.
-
update
public void update(long value, long timestamp)
Adds an old value with a fixed timestamp to the reservoir.- Parameters:
value
- the value to be addedtimestamp
- the epoch timestamp ofvalue
in seconds
-
getSnapshot
public Snapshot getSnapshot()
Description copied from interface:Reservoir
Returns a snapshot of the reservoir's values.- Specified by:
getSnapshot
in interfaceReservoir
- Returns:
- a snapshot of the reservoir's values
-
-