private static MetricRange TryGetMetricRange(
            double[] values,
            int minPercentile, int maxPercentile)
        {
            Code.BugIf(minPercentile > maxPercentile, "minPercentile>maxPercentile");
            if (!CheckValues(values))
            {
                return(MetricRange.Empty);
            }

            minPercentile = _percentileRange.Clamp(minPercentile);
            maxPercentile = _percentileRange.Clamp(maxPercentile);

            var statValues = new Statistics(values);
            var minValue   = statValues.Percentiles.Percentile(minPercentile);
            var maxValue   = statValues.Percentiles.Percentile(maxPercentile);

            // NB: min may be less then max due to rounding errors
            if (minValue > maxValue)
            {
                minValue = maxValue;
            }

            return(MetricValueHelpers.CreateMetricRange(minValue, maxValue));
        }
Example #2
0
        public MetricRange TryGetRelativeLimitValues(double[] values, double[] baselineValues)
        {
            var result = TryGetRelativeMeanValue(values, baselineValues);

            if (result == null)
            {
                return(MetricRange.Empty);
            }

            var minRatio = result * 0.98;             // 0.99*0.99 accuracy
            var maxRatio = result * 1.02;             // 1.01*1.01 accuracy

            return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio));
        }
Example #3
0
        public MetricRange TryGetLimitValues(double[] values)
        {
            var result = TryGetMeanValue(values);

            if (result == null)
            {
                return(MetricRange.Empty);
            }

            var minRatio = result * 0.99;             // 0.99 accuracy
            var maxRatio = result * 1.01;             // 1.01 accuracy

            return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio));
        }
        private static MetricRange TryGetMetricRange(
            double[] values, double[] baselineValues,
            int minPercentile, int maxPercentile)
        {
            Code.BugIf(minPercentile > maxPercentile, "minPercentile>maxPercentile");
            if (!CheckValues(values, baselineValues))
            {
                return(MetricRange.Empty);
            }

            minPercentile = _percentileRange.Clamp(minPercentile);
            maxPercentile = _percentileRange.Clamp(maxPercentile);

            var statBaseline = new Statistics(baselineValues);
            var minBaseline  = statBaseline.Percentiles.Percentile(minPercentile);
            var maxBaseline  = statBaseline.Percentiles.Percentile(maxPercentile);

            if (minBaseline.Equals(0) || maxBaseline.Equals(0))
            {
                return(MetricRange.Empty);
            }

            var statValues = new Statistics(values);
            var minValue   = statValues.Percentiles.Percentile(minPercentile);
            var maxValue   = statValues.Percentiles.Percentile(maxPercentile);

            // NB: min may be less then max due to rounding errors
            if (minValue > maxValue)
            {
                minValue = maxValue;
            }

            var minRatio = minValue / minBaseline;
            var maxRatio = maxValue / maxBaseline;

            if (minRatio > maxRatio)
            {
                minRatio = maxRatio;
            }

            return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio));
        }
Example #5
0
        private static MetricRange TryGetMetricRange(
            double[] values, double[] baselineValues,
            int minPercentile, int maxPercentile)
        {
            Code.BugIf(minPercentile > maxPercentile, "minPercentile>maxPercentile");
            if (!CheckValues(values, baselineValues))
            {
                return(MetricRange.Empty);
            }

            minPercentile = _percentileRange.Clamp(minPercentile);
            maxPercentile = _percentileRange.Clamp(maxPercentile);

            var statBaseline = new Statistics(baselineValues);
            var minBaseline  = statBaseline.Percentiles.Percentile(minPercentile);
            var maxBaseline  = statBaseline.Percentiles.Percentile(maxPercentile);

            // ReSharper disable CompareOfFloatsByEqualityOperator
            if (minBaseline == 0 || maxBaseline == 0)
            {
                // ReSharper restore CompareOfFloatsByEqualityOperator
                return(MetricRange.Empty);
            }

            var statValues = new Statistics(values);
            var minValues  = statValues.Percentiles.Percentile(minPercentile);
            var maxValues  = statValues.Percentiles.Percentile(maxPercentile);

            var minRatio = minValues / minBaseline;
            var maxRatio = maxValues / maxBaseline;

            if (minRatio > maxRatio)
            {
                minRatio = maxRatio;
            }

            return(MetricValueHelpers.CreateMetricRange(minRatio, maxRatio));
        }
Example #6
0
        public MetricRange TryGetRelativeActualValues(double[] values, double[] baselineValues)
        {
            var result = TryGetRelativeMeanValue(values, baselineValues);

            return(result == null ? MetricRange.Empty : MetricValueHelpers.CreateMetricRange(result, result));
        }
Example #7
0
        public MetricRange TryGetActualValues(double[] values)
        {
            var result = TryGetMeanValue(values);

            return(result == null ? MetricRange.Empty : MetricValueHelpers.CreateMetricRange(result, result));
        }