#c# #.net #charts #cpu-usage
#c# #.net #Диаграммы #загрузка процессора
Вопрос:
Я использую FastLineChart в C # для отображения сигнала с внешнего устройства в режиме реального времени. Частота дискретизации составляет около 700 Гц. В моей программе я уменьшаю частоту дискретизации примерно до 100 Гц, чтобы минимизировать ненужное разрешение дисплея, но все равно использую для этого слишком много процессора.
Я думаю, проблема в том, что я прокручиваю данные по диаграмме (как это делает график процессора в Windows), и это отнимает ресурсы. Я делаю это, удаляя самый старый элемент, а затем добавляя новый в определенный ряд (как показано ниже).
timeGraph.Series[0].Points.RemoveAt(0);
timeGraph.Series[0].Points.AddY(average);
Загрузка процессора составляет около 30%, что, я думаю, немного завышено. У меня не самый новый компьютер, но это Code 2 Duo с видеокартой GT9600.
У кого-нибудь есть какие-либо предложения? Есть ли лучший способ сделать это? Или конкретный способ сделать это быстрее?
Спасибо за любую помощь!
Ответ №1:
Хорошо, итак, старый вопрос для ответа, но я целую вечность сталкивался с проблемой, подобной этой, так что для всех, кто найдет это:
Чтобы остановить массовую загрузку процессора:
1) объявите целое число
int graphUdate = 0;
2) в form_ load добавьте
chart1.Series.SuspendUpdates();
3) при добавлении точки к вашему графику используйте
graphUpdate ;
4) в том же пространстве обновляйте график каждые # количество точек и сбрасывайте graphUpdate
if (graphUpdate == #)
{
chart1.Series.ResumeUpdates();
chart1.Series.Invalidate();
chart1.Series.SuspendUpdates();
graphUpdate = 0;
}
это обновляет все точки, собранные с момента последней chart1.Series.SuspendUpdates();
удаление точек также будет приостановлено, что существенно повлияет на загрузку процессора.
Ответ №2:
Я бы предположил, что проблема может заключаться в том, что вы используете Winforms. GDI работает довольно медленно при работе с анимированной графикой. Если возможно, переход на WPF определенно поможет. Однако, если элемент управления диаграммами не использует преимущества видеокарты, вам может потребоваться поискать другой элемент управления.