FSharpChart与Windows.窗体在许多点上非常缓慢



我使用下面示例中的代码对F#Interactive中的值列表进行基本绘制。打印更多点时,显示所需的时间会急剧增加。在下面的例子中,10^4分在4秒内显示,而4.10^4分需要53秒的耐心测试才能显示。总的来说,绘制N个点的时间大约是在N^2。

结果是,我可能会在这个代码前面添加一个插值层,但

1) 我想知道是否有人知道FSharpChart和Windows.Forms的工作原理,可以解释是什么导致了这种行为?(数据是有界的,所以似乎排除了一件事,那就是显示器需要调整比例。)

2) 除了自己插入数据之外,还有什么简单的补救措施吗?

let plotl (f:float list) =
    let chart = FSharpChart.Line(f, Name = "")
            |> FSharpChart.WithSeries.Style(Color = System.Drawing.Color.Red, BorderWidth = 2)
    let form = new Form(Visible = true, TopMost = true, Width = 700, Height = 500)
    let ctl = new ChartControl(chart, Dock = DockStyle.Fill)
    form.Controls.Add(ctl)
let z1 = [for i in 1 .. 10000 do yield sin(float(i * i))]
let z2 = [for i in 1 .. 20000 do yield sin(float(i * i))]
plotl z1
plotl z2

首先,FSharpChart是旧版本库中使用的名称。最新版本名为F#Charting,附带了一个新文档,仅使用Chart

为了回答您的问题,Chart.LineChart.Points对于大量点数来说相当慢。该库还有Chart.FastLineChart.FastPoints(它们不支持那么多功能,但速度更快)。因此,尝试获取最新版本的F#图表并使用该方法的"快速"版本。

相关内容

  • 没有找到相关文章

最新更新