/// <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);
        }
Exemple #4
0
 public ExponentiallyDecayingReservoirTests()
 {
     _clock     = new TestClock();
     _scheduler = new TestReservoirRescaleScheduler(_clock);
 }