私はJavaFXでLineChartのパフォーマンスを向上させようとしてきましたが、大成功はしていませんでした。私はまた、大きなデータを表示しようとしたときに、一部のプログラマが見いだした共通の問題であると考えていることがわかりました(ここではdatasize> 10,000)。たとえば、この種のデータは科学技術ではよくあることですが、JavaFXでLineChartを高速化する方法を理解することができれば幸いです。JavaFX LineChartの性能
まあ、私は同様の質問Performance issue with JavaFX LineChart with 65000 data pointsとJavaFX LineChart - draw arrayの2つの記事をスタックオーバーフローで見つけました。トピックPerformance issue with JavaFX LineChart with 65000 data pointsは、Ramer–Douglas–Peucker algorithmを使用するための提案(Adamによる)で終了します。速度を上げるためにLineChartへのデータ点数を減らすことができます。
しかし、科学と工学のデータでは、プロットの形状を確認してから拡大して、プロットの特定の部分の詳細を確認する必要があります。したがって、Ramer-Douglas-Peuckerアルゴリズムを使用すると、ユーザーがズームイン/アウトするたびにLineChartを再描画する必要があります。
したがって、私は、JavaFXでLineChartをスピードアップする方法についていくつかのヒントがあるかどうかを知りたいと思います。これまでに学んだことのあるコードの例を示します。
このコードを実行するとわかるように、レンダリングには最大のコストがかかりますが、これらのタイミングではキャプチャできませんでした。それから、私の見解では、改善はそこに焦点を当てるべきですが、私はどのように分かっていません。
ありがとうございます。
レンダリングは時間がかかる部分なので、私が見たことはあなたのシナリオではうまくいくと思います。いくつかの "軽量"データ表現(例えば 'double []')でデータの縮小を行い、次に 'XYChart.Data'オブジェクトの縮小数を作成します。レンダリングが遅い理由は、線グラフの各線分がシーングラフのノードであることです。レイアウトの計算とCSSの適用が必要です。データの処理ははるかに高速になる可能性があります。もう1つの方法(私はこれをやらなければなりませんでした)は独自のグラフを(例えばキャンバスで)実装することです。 –
ありがとうございます、私は後でそれを試みます。今のところ、レンダリングにかかる時間をどのように得ることができるかを誰かが知っているかどうかを知りたいと思います。 –
実演者の折れ線グラフの実装を知っている人はいますか? –