Beispiel #1
0
 private static void AddObservations(Histogram histogram, params long[] observations)
 {
     foreach (var observation in observations)
     {
         histogram.AddObservation(observation);
     }
 }
        public void Run()
        {
            for (var i = 0; i < _iterations; i++)
            {
                try
                {
                    switch (_functionStep)
                    {
                    case FunctionStep.One:
                    case FunctionStep.Two:
                    {
                        _outputQueue.Add(_inputQueue.Take());
                        break;
                    }

                    case FunctionStep.Three:
                    {
                        var value    = _inputQueue.Take();
                        var duration = (Stopwatch.GetTimestamp() - value) * _ticksToNanos;
                        duration /= 3;
                        duration -= _nanoTimeCost;
                        _histogram.AddObservation((long)duration);
                        break;
                    }
                    }
                }
                catch (Exception)
                {
                    break;
                }
            }

            _done = true;
        }
        public void Run()
        {
            running.Data = true;
            while (running.Data)
            {
                try
                {
                    switch (functionStep)
                    {
                    case FunctionStep.ONE:
                    case FunctionStep.TWO:
                    {
                        outputQueue.Add(inputQueue.Take());
                        break;
                    }

                    case FunctionStep.THREE:
                    {
                        long value    = inputQueue.Take();
                        long duration = stopwatch.GetElapsedNanoSeconds() - value;
                        duration /= 3;
                        duration -= nanoTimeCost;
                        histogram.AddObservation(duration);
                        break;
                    }
                    }

                    sequence.Data++;
                }
                catch (ThreadInterruptedException)
                {
                    break;
                }
            }
        }
Beispiel #4
0
 private void AddObservations(Histogram histogram, params long[] observations)
 {
     for (int i = 0, size = observations.Length; i < size; i++)
     {
         histogram.AddObservation(observations[i]);
     }
 }
Beispiel #5
0
        public void ShouldGetFourNinesUpperBound()
        {
            var intervals = new long[] { 1, 10, 100, 1000, 10000 };
            var histogram = new Histogram(intervals);

            for (long i = 1; i < 102; i++)
            {
                histogram.AddObservation(i);
            }

            Assert.AreEqual(1000L, histogram.FourNinesUpperBound);
        }
Beispiel #6
0
        public void ShouldCorrectMeanForSkewInTopAndBottomPopulatedIntervals()
        {
            var intervals = new long[] { 100, 110, 120, 130, 140, 150, 1000, 10000 };
            var histogram = new Histogram(intervals);

            for (long i = 100; i < 152; i++)
            {
                histogram.AddObservation(i);
            }

            Assert.AreEqual(125.02d, histogram.Mean);
        }
Beispiel #7
0
        public void ShouldGetTwoNinesUpperBound()
        {
            long[]    intervals  = new long[] { 1, 10, 100, 1000, 10000 };
            Histogram histogram2 = new Histogram(intervals);

            for (long i = 1; i < 101; i++)
            {
                histogram2.AddObservation(i);
            }

            Assert.AreEqual(100L, histogram2.GetTwoNinesUpperBound());
        }
Beispiel #8
0
        public void ShouldCorrectMeanForSkewInTopAndBottomPopulatedIntervals()
        {
            long[]    intervals  = new long[] { 100, 110, 120, 130, 140, 150, 1000, 10000 };
            Histogram histogram2 = new Histogram(intervals);

            for (long i = 100; i < 152; i++)
            {
                histogram2.AddObservation(i);
            }

            Assert.AreEqual(125.01923076923076923076923077m, histogram2.CalculateMean());
        }
Beispiel #9
0
        public void OnAvailable(ValueEntry entry)
        {
            switch (functionStep)
            {
            case FunctionStep.ONE:
            case FunctionStep.TWO:
                break;

            case FunctionStep.THREE:
                long duration = stopwatch.GetElapsedNanoSeconds() - entry.Value;
                duration /= 3;
                duration -= stopwatchTimeCostNs;
                histogram.AddObservation(duration);
                break;
            }
        }
Beispiel #10
0
        public void OnEvent(ValueEvent @event, long sequence, bool endOfBatch)
        {
            var t1 = Stopwatch.GetTimestamp();

            histogram.AddObservation(t1 - t0 - pauseTimeNs);
            if (@event.Value < maxEvents)
            {
                while (pauseTimeNs > (Stopwatch.GetTimestamp() - t1))
                {
                    Thread.Sleep(0);
                }

                Send();
            }
            else
            {
                latch.Set();
            }
        }
Beispiel #11
0
        public void OnNext(ValueEvent data, long sequence, bool endOfBatch)
        {
            switch (_functionStep)
            {
            case FunctionStep.One:
            case FunctionStep.Two:
                break;

            case FunctionStep.Three:
                var duration = (Stopwatch.GetTimestamp() - data.Value) * _ticksToNanos;
                duration /= 3;
                duration -= _nanoTimeCost;
                _histogram.AddObservation((long)duration);
                break;
            }
            if (sequence == _iterations - 1)
            {
                _mru.Set();
            }
        }
        public void OnEvent(ValueEvent @event, long sequence, bool endOfBatch)
        {
            switch (_functionStep)
            {
            case FunctionStep.One:
            case FunctionStep.Two:
                break;

            case FunctionStep.Three:
                var duration = (Stopwatch.GetTimestamp() - @event.Value) * (_ticksToNanos == 0L ? 1 : _ticksToNanos);
                duration /= 3;
                duration -= _nanoTimeCost;
                _histogram.AddObservation(duration);
                break;
            }
            if (sequence == _count && _mru != null)
            {
                _mru.Set();
            }
        }
Beispiel #13
0
        public void ShouldNotAddObservation()
        {
            var histogram = new Histogram(new long[] { 10, 20, 30 });

            Assert.IsFalse(histogram.AddObservation(31L));
        }
Beispiel #14
0
 public void ShouldAddObservation()
 {
     Assert.IsTrue(_histogram.AddObservation(10L));
     Assert.AreEqual(1L, _histogram.Count);
 }
Beispiel #15
0
 public void ShouldAddObservation()
 {
     Assert.IsTrue(histogram.AddObservation(10L));
     Assert.AreEqual(1L, histogram.GetCountAt(1));
 }