Я использую код как пример ниже, чтобы сделать базовое построение списка значений из F # Interactive. При построении большего количества точек время, необходимое для отображения, резко возрастает. В приведенных ниже примерах в течение 4 секунд отобразится 10^4 точки, тогда как 4.10^4 точки проходят проверку на терпение на 53 секунды для отображения. В целом это примерно так, как если бы время построения N точек было в N^2.FSharpChart с Windows.Forms очень медленно для многих точек
В результате я, вероятно, добавить интерполяционный слой перед этим кодом, но
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
Это технический алгоритм O (n), но современные процессоры имеют 4 различных Оса. Чем больше набор данных, тем ниже вероятность того, что данные будут помещены в кеш процессора. Это будет действительно танк, когда он исходит из очень медленной ОЗУ. Обходным путем является только сбор меньших данных, 40 тыс. Точек - это гораздо больше, чем нужно для точной диаграммы. –