2017-01-30 18 views
2

RaspianのLineChart - Raspberry Piの通常の応答よりも遅いです。私はオシロスコープをコーディングしており、2シリーズの500ポイント(合計1000ポイント)を連続的に再描画しています。アニメーションがオフです。データ収集は実行可能です(2ms未満)。現在のデータ再描画時間は800ms程度です。必要な再描画時間は少なくとも100msです。以下にコードスニペットを示します。どのようなラズベリーパイの実行javafxグラフの表示のためのベストプラクティスですか?私は間違ったアプローチをしていますか?私は2つの線を連続的に再描画するために別の種類のチャートを使うべきですか?LineChart JavaFXの性能

プラットフォーム:

  • ラズベリーパイV 3
    • OS:。Raspianリリース8(ジェシー)
    • Javaバージョン:
      • Javaのバージョン "1.8.0_65"
      • Java(TM)SEランタイム環境(ビルド1.8.0_65-b17)
      • は、Java HotSpot(TM)クライアントVM
    • JavaFXのバージョン(25.65-B01、混合モードを構築する):armv6hf-SDK 8.0.102(ビルドB00)
    • メモリスプリット:512メガバイトグラフィックス、512メガバイトシステム
    • ビデオ: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() 
+0

注:ItachiUchihaの回答と違って、http://stackoverflow.com/questions/22089022/line-chart-live-updateでは、データを追加するのではなく、すべてのデータを置き換える必要があります。 –

+0

ここでJewelseaの一般的なjavafxソリューションを確認しました:https://gist.github.com/jewelsea –

+0

更新:FX統合でJFreeChart LineChartを使って試しました。これは遅く表示されます。 –

答えて

1

私はチャートからグリッド線を除去することが非常に役立つことが分かりました。

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

グリッド線の数を減らそうとしていませんか。

関連する問題