/// <summary> /// Initializes a new instance of the <see cref="DefaultForwardDecayingReservoir" /> class. /// </summary> /// <param name="sampleSize">The number of samples to keep in the sampling reservoir</param> /// <param name="alpha"> /// The alpha value, e.g 0.015 will heavily biases the reservoir to the past 5 mins of measurements. The higher the /// value the more biased the reservoir will be towards newer values. /// </param> /// <param name="clock">The <see cref="IClock">clock</see> type to use for calculating processing time.</param> // ReSharper disable MemberCanBePrivate.Global public DefaultForwardDecayingReservoir(int sampleSize, double alpha, IClock clock) // ReSharper restore MemberCanBePrivate.Global { _sampleSize = sampleSize; _alpha = alpha; _clock = clock; _values = new SortedList <double, WeightedSample>(sampleSize, ReverseOrderDoubleComparer.Instance); _startTime = new AtomicLong(clock.Seconds); _rescaleScheduler = DefaultReservoirRescaleScheduler.Instance; _rescaleScheduler.ScheduleReScaling(this); }
public ForwardDecayingLowWeightThresholdReservoir( int sampleSize, double alpha, double sampleWeightThreshold, IClock clock, IReservoirRescaleScheduler rescaleScheduler) { sampleSize_ = sampleSize; alpha_ = alpha; sampleWeightThreshold_ = sampleWeightThreshold; clock_ = clock; rescaleScheduler_ = rescaleScheduler; values_ = new SortedList <double, WeightedSample>(sampleSize, ReverseOrderDoubleComparer.Instance); startTime_ = clock.Seconds; rescaleScheduler_.ScheduleReScaling(this); }
/// <inheritdoc /> public IMetricsBuilder ForwardDecaying(int sampleSize, double alpha, double minimumSampleWeight, IClock clock, IReservoirRescaleScheduler rescaleScheduler) { Reservoir(() => new DefaultForwardDecayingReservoir(sampleSize, alpha, minimumSampleWeight, clock, rescaleScheduler)); return(Builder); }
public ExponentiallyDecayingReservoirTests() { _clock = new TestClock(); _scheduler = new TestReservoirRescaleScheduler(_clock); }