我目前正在研究深度強化學習實現。要了解培訓的進展情況,我創建瞭如下所示的用戶界面。每次在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刷新(根據模)。
我假設每次調用添加點到圖表都會導致重繪。你使用什麼圖表控制?是否有可能推遲重繪,以便圖表週期性地轉換而不是每次更新系列時? – Charleh
批量調用將是第一件嘗試。可能不需要立即調度每一個值,這將需要很多週期 –
使用控制 System.Windows.Forms.DataVisualization.Charting.Chart – MarcoMeter