Как получить общее время процессора в C #? - PullRequest
0 голосов
/ 21 апреля 2011

Я много исследовал, но все, что я могу найти, это как получить одно время процесса.

Process p = exampleProcess
return p.TotalProcessorTime

Как узнать общее время процессора?Получу ли я процент использования процессора этим процессом, если я выполню:

return p/totalProcessorTime

?

Ответы [ 3 ]

2 голосов
/ 21 апреля 2011

Нет, вы не можете разделить процесс на промежуток времени.TotalProcessorTime - это измерение того, сколько времени фактически было потрачено на выполнение кода.Это абсолютное число.Если вы хотите относительное число, то вам нужно измерить, как долго процесс запущен.Вычтите StartTime из ExitTime.Как это:

        Process prc = /* something */
        var wallTime = DateTime.Now - prc.StartTime;
        if (prc.HasExited) wallTime = prc.ExitTime - prc.StartTime;
        var procTime = prc.TotalProcessorTime;
        var cpuUsage = 100 * procTime.TotalMilliseconds / wallTime.TotalMilliseconds;
1 голос
/ 21 апреля 2011

Вы можете использовать PerformanceCounter:

PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName);
double currentCpuPercent = cpuCounter.NextValue();
0 голосов
/ 21 апреля 2011

Вам нужно общее время процессора, не ограниченное одним процессом, правильно?Означает ли это, что вам нужно процессорное время для всех процессов в системе?Разве это не будет таким же, как прошедшее время с момента запуска системы?Если это так, GetTickCount64 добьется цели.

...