Управление диаграммами в C # (.NET) использует тонны процессора - PullRequest
6 голосов
/ 06 мая 2011

Я использую FastLineChart в C # для отображения сигнала от внешнего устройства в режиме реального времени.Частота дискретизации составляет около 700 Гц.В моей программе я уменьшил частоту примерно до 100 Гц, чтобы свести к минимуму ненужное разрешение для дисплея, но все еще использовал слишком много ресурсов процессора, делая это.граф процессора в окнах) и это поглощает ресурсы.Я делаю это, удаляя самый старый элемент, а затем добавляя новый к определенной серии (как показано ниже).

timeGraph.Series[0].Points.RemoveAt(0);
timeGraph.Series[0].Points.AddY(average);

Загрузка ЦП составляет около 30%, что, я думаю, слишком много.У меня нет новейшего компьютера, но это Code 2 Duo с графической картой GT9600.

У кого-нибудь есть предложения?Есть лучший способ сделать это?Или конкретный способ сделать это быстрее?

Спасибо за любую помощь!

Ответы [ 2 ]

5 голосов
/ 16 мая 2012

Хорошо, такой старый вопрос, чтобы ответить, но я застрял с проблемой, похожей на это целую вечность, так что для тех, кто находит это:

Чтобы остановить интенсивное использование процессора:

1) объявить целое число

int graphUdate = 0;

2) в форме загрузить, добавить

chart1.Series.SuspendUpdates();

3) при добавлении точки на график используйте

graphUpdate++;

4) в одном и том же месте обновлять график каждые # количество точек и сбрасывать graphUpdate

if (graphUpdate == #)
            {
                chart1.Series.ResumeUpdates();
                chart1.Series.Invalidate();
                chart1.Series.SuspendUpdates();
                graphUpdate = 0;
            }

это обновляет все точки, собранные с момента последнего chart1.Series.SuspendUpdates ();

снятие очков также будет приостановлено, что делает ГЛАВНОЕ различие в использовании ЦП.

1 голос
/ 06 мая 2011

Я бы предположил, что проблема может заключаться в том, что вы используете Winforms. GDI + довольно медленный при работе с анимированной графикой. Если возможно, переход на WPF определенно поможет. Однако, если элемент управления диаграммы не использует преимущества графической карты, вам может понадобиться другой элемент управления.

...