OxyPlot: SkiaSharp против SharpDX

#c# #performance #sharpdx #oxyplot #skiasharp

#c# #Производительность #sharpdx #oxyplot #skiasharp

Вопрос:

Я пытаюсь использовать OxyPlot с .NET Core 3.0, чтобы показать график с тысячами рядов линий, и каждый из этих рядов линий содержит несколько сотен точек.

Поскольку это так много данных, я пробую как средство визуализации SkiaSharp, так и SharpDX (https://github.com/oxyplot/oxyplot-sharpdx ). Однако я не очень уверен, какой из них выбрать, поскольку разработка oxyplot-sharpdx, похоже, застряла несколько месяцев назад, а SkiaSharp довольно новый.

Какой из них вы бы мне порекомендовали? Кто-нибудь проводил какое-нибудь сравнение производительности между ними?

Чтобы привести некоторый пример того, чего я пытаюсь достичь, вот некоторый код:

     public MainViewModel()
    {
        var model = new PlotModel { Title = "Hello SharpDX from WPF" };
        
        model.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom });
        model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Title="Left Axis Title" });
        
        for (int i = 0; i < 5000;   i)
        {
            var lineSeries = new LineSeries ();
            for (int j = 0; j < 300;   j)
            {
                lineSeries.Points.Add(new DataPoint(j, j * i % 2));
            }
            model.Series.Add(lineSeries);
        }

        this.Model = model;
    }

    public PlotModel Model { get; }
  

Любая помощь была бы действительно оценена.

Ответ №1:

На всякий случай, если кто-то еще также сталкивается с этим.

Покопавшись в этом, я решил перейти на SkiaSharp, поскольку он показал (по крайней мере, в наших тестах), что он немного быстрее SharpDX.

Для этих тестов мы построили 5000 линий, каждая из которых содержит 300 точек.

Среднее время выполнения 3 измерений с помощью SkiaSharp составило 23,91 секунды. Между тем, с SharpDX среднее время составляло 25,8 секунды.

Также разработка, похоже, идет более активно в случае SkiaSharp.

Эти два факта заставили нас сделать этот выбор.

Я надеюсь, что этот ответ может помочь кому-то еще.