OxyPlot:SkiaSharp vs SharpDX

问题描述

我正在尝试将OxyPlot与.NET Core 3.0一起使用以显示具有数千个Lineseries的绘图,并且每个Lineseries都包含数百个点。

由于数据太多,因此我正在尝试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; }

任何帮助都会非常感激。

解决方法

以防万一其他人也面临这个问题。

研究了这一点之后,我决定继续使用SkiaSharp,因为它(至少在我们的测试中显示)比SharpDX快一点。

对于这些测试,我们绘制了5000条线,每条线都有300点。

使用 SkiaSharp 进行3次测量的平均时间为 23.91 秒。同时,使用 SharpDX 的平均时间为 25.8 秒。

在SkiaSharp案中,开发似乎也更加活跃。

这两个事实使我们做出了选择。

我希望这个答案可以帮助其他人。