Рассчитать общее использование процессора - PullRequest
1 голос
/ 16 января 2009

Какой наилучший алгоритм для расчета общего использования ЦП в определенное время во время выполнения процесса.

Я работаю на платформе Windows в C ++.

Ответы [ 7 ]

2 голосов
/ 16 января 2009

GetProcessTimes для разрешения 100 наносекунд. Если вы хотите время цикла, используйте QueryProcessCycleTime в Vista и выше.

1 голос
/ 01 сентября 2009

Позвольте мне порекомендовать вам эту замечательную статью: http://www.codeproject.com/KB/threads/Get_CPU_Usage.aspx

Я уверен, что вы найдете это полезным.

1 голос
/ 16 января 2009

Intel VTune - отличный инструмент для анализа ресурсов процессора: http://www.intel.com/cd/software/products/asmo-na/eng/239144.htm

0 голосов
/ 02 декабря 2013

Простейшим методом получения общей загрузки ЦП за период является использование GetSystemTimes API. Это функция ядра, доступная начиная с Windows XP SP1. Возвращает количество процессорного времени, использованного с момента включения системы. Таким образом, разница между этими значениями, полученными в течение интервала, даст вам общее использование ЦП за этот интервал.

Помните, что время ядра, предоставляемое этой функцией, включает время простоя, поэтому вы должны вычесть время простоя, возвращаемое первым параметром из него.

Функция возвращает общее время для всех доступных ядер / процессоров, поэтому вы можете также разделить дельты на количество процессоров, полученных из GetSystemInfo .

0 голосов
/ 27 января 2013

// Объявить
PerformanceCounter cpuCounter = null;

// инициализируем где-нибудь в конструкторе ..
cpuCounter = new PerformanceCounter ();
cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% времени процессора";
cpuCounter.InstanceName = "_Total";

Затем, чтобы узнать загрузку процессора в%, просто наберите
cpuCounter.NextValue ()

Источник: http://zamov.online.fr/EXHTML/CSharp/CSharp_927308.html

0 голосов
/ 16 января 2009

Не использовать WMI Просто используйте win32 NAPI

0 голосов
/ 16 января 2009

Используйте WMI, чтобы получить "PercentProcessorTime"; имейте в виду, что это, вероятно, приведет к снижению производительности.

Если вы хотите ограничить свое приложение, лучше использовать собственную метрику внутренней производительности, специфичную для вашего приложения, и регулировать ее на основе этого (например, частоту обновления экрана и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...