private void AddToLShapeChart(ComparisonRecordInfoWrapper wrappedComparisonInfo)
        {
            double startTime           = FirstSeconds;
            double endTime             = LastSeconds;
            var    frametimeTimeWindow = wrappedComparisonInfo.WrappedRecordInfo.Session.GetFrametimeTimeWindow(startTime, endTime, _appConfiguration, ERemoveOutlierMethod.None);

            var lShapeQuantiles = _frametimeAnalyzer.GetLShapeQuantiles();

            double action(double q) => _frametimeStatisticProvider.GetPQuantileSequence(frametimeTimeWindow, q / 100);

            var quantiles      = lShapeQuantiles.Select(q => new ObservablePoint(q, action(q)));
            var quantileValues = new ChartValues <ObservablePoint>();

            quantileValues.AddRange(quantiles);

            ComparisonLShapeCollection.Add(
                new LineSeries
            {
                Id                = wrappedComparisonInfo.WrappedRecordInfo.FileRecordInfo.Id,
                Values            = quantileValues,
                Stroke            = wrappedComparisonInfo.IsHideModeSelected ? Brushes.Transparent : wrappedComparisonInfo.Color,
                Fill              = Brushes.Transparent,
                StrokeThickness   = 1,
                LineSmoothness    = 1,
                PointGeometrySize = 5,
                PointGeometry     = DefaultGeometries.Square,
                PointForeground   = wrappedComparisonInfo.IsHideModeSelected ? Brushes.Transparent : wrappedComparisonInfo.Color,
                LabelPoint        = chartPoint => string.Format(CultureInfo.InvariantCulture, "{0:0.##}", chartPoint.Y, "ms")
            });
        }
Esempio n. 2
0
        private void AddToLShapeChart(ComparisonRecordInfoWrapper wrappedComparisonInfo)
        {
            double startTime           = FirstSeconds;
            double endTime             = _maxRecordingTime - LastSeconds;
            var    frametimeTimeWindow = wrappedComparisonInfo.WrappedRecordInfo.Session.GetFrametimeTimeWindow(startTime, endTime, ERemoveOutlierMethod.None);

            var lShapeQuantiles = _frametimeAnalyzer.GetLShapeQuantiles();

            double action(double q) => _frametimeStatisticProvider.GetPQuantileSequence(frametimeTimeWindow, q / 100);

            var quantiles      = lShapeQuantiles.Select(q => new ObservablePoint(q, action(q)));
            var quantileValues = new ChartValues <ObservablePoint>();

            quantileValues.AddRange(quantiles);

            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
            {
                ComparisonLShapeCollection.Add(
                    new LineSeries
                {
                    Values            = quantileValues,
                    Stroke            = wrappedComparisonInfo.Color,
                    Fill              = Brushes.Transparent,
                    StrokeThickness   = 1,
                    LineSmoothness    = 1,
                    PointGeometrySize = 10,
                    PointGeometry     = DefaultGeometries.Triangle,
                });
            }));
        }
Esempio n. 3
0
        private void OnCopyQuantiles()
        {
            if (RecordInfo == null)
            {
                return;
            }

            var lShapeQuantiles = _frametimeAnalyzer.GetLShapeQuantiles();
            var frametimes      = GetFrametimesSubset();

            double action(double q) => Math.Round(_frametimeStatisticProvider.GetPQuantileSequence(frametimes, q / 100), 2);

            StringBuilder builder = new StringBuilder();

            foreach (var quantile in lShapeQuantiles)
            {
                builder.Append(quantile.ToString(CultureInfo.InvariantCulture) + "%" + "\t" + action(quantile)
                               .ToString(CultureInfo.InvariantCulture) + Environment.NewLine);
            }

            Clipboard.SetDataObject(builder.ToString(), false);
        }