LineChart JavaFX性能

对于Raspian – Raspberry Pi上的LineChart,我正在经历比正常响应慢的情况。 我正在编码示波器,并不断重新绘制两个500点的系列(共1000点)。 animation已closures。 数据收集是高性能的(低于2ms)。 当前数据重绘时间为800毫秒左右。 所需的重绘时间至less为100ms。 我在下面包含了代码片段。 在树莓派上的高性能javafx图表显示的最佳做法是什么? 我采取了错误的做法? 我应该用不同的图表来连续重绘两行吗?

平台:

  • 树莓派v。3
    • OS:Raspian版本8(jessie)
    • Java版本:
      • java版本“1.8.0_65”
      • Java(TM)SE运行时环境(build 1.8.0_65-b17)
      • Java HotSpot(TM)Client VM(构build25.65-b01,混合模式)
    • JavaFX版本:armv6hf-sdk 8.0.102(build b00)
    • 内存分割:512 MBgraphics,512 MB系统
    • video:HDMI
    • SoC:Broadcom BCM2837
    • CPU:4×ARM Cortex-A53,1.2GHz

显示代码

@FXML LineChart oscilloscope; //indicates that the previous data has been displayed //and that the latest data should now be displayed //didn't bother to synchronize boolean needsUpdating = true; protected void startDisplay() { oscilloscope.setAnimated(false); oscilloscope.setCreateSymbols(false); oscilloscope.getXAxis().setLabel("Time (ms)"); oscilloscope.getXAxis().setAutoRanging(false); oscilloscope.getYAxis().setLabel("Volts (v)"); oscilloscope.getYAxis().setAutoRanging(false); new Thread() { public void run() { while (!done) { XYChart.Series ch1 = getChan1Data(); XYChart.Series ch2 = getChan2Data(); ch1.setName("Channel 1"); ch2.setName("Channel 2"); if (needsUpdated) { needsUpdated = false; Platform.runLater(new Runnable() { @Override public void run() { //performance is the same whether I use this or //oscilloscope.getData().clear() oscilloscope.setData(FXCollections.observableArrayList()); oscilloscope.getData().addAll(ch1, ch2); needsUpdating = true; } //end run() } //end Platform.runLater() } //end if(needsUpdating) } //end while(!done) }.start(); //end new Thread } //end startDisplay() 

我发现从图表中删除网格线非常有帮助。

例如

 chart.setHorizontalGridLinesVisible(false); chart.setVerticalGridLinesVisible(false); 

还没有试图减少网格线的数量。