2017-08-17 45 views
0

我目前正在研究深度強化學習實現。要了解培訓的進展情況,我創建瞭如下所示的用戶界面。每次在while循環結束時,文本框和兩個圖表都會更新。這個循環在一個線程內運行,該線程模擬老虎機並訓練神經網絡。性能分析器指示87%的CPU使用率由主線程(運行UI)消耗,其餘部分留給模擬線程。改善顯示動態實時數據的UI性能

有沒有人知道一個很好的方法來顯着縮減UI的成本?

private delegate void AppendChartCallback(Chart chart, double x, double y); 
    private void AppendChart(Chart chart, double x, double y) 
    { 
     if (chart.InvokeRequired) 
     { 
      AppendChartCallback d = new AppendChartCallback(AppendChart); 
      Invoke(d, new object[] { chart, x, y }); 
     } 
     else 
     { 
      chart.Series[0].Points.AddXY(x, y); 

      if (chart.Series[0].Points.Count % 20 == 0) 
      { 
       chart.Refresh(); 
      } 
     } 
    } 

編輯:我暫停圖表更新和添加更多的數據量調用單獨12:18刷新(根據模)。

enter image description here

+0

我假設每次調用添加點到圖表都會導致重繪。你使用什麼圖表控制?是否有可能推遲重繪,以便圖表週期性地轉換而不是每次更新系列時? – Charleh

+1

批量調用將是第一件嘗試。可能不需要立即調度每一個值,這將需要很多週期 –

+0

使用控制 System.Windows.Forms.DataVisualization.Charting.Chart – MarcoMeter

回答

0

將點加到列表中。

有一個定時器使視圖每16.66 ms無效。