如何在c#中获得总的处理器时间

本文关键字:处理器 时间 | 更新日期: 2023-09-27 17:50:38

我已经研究了很多,但我所能找到的是如何获得一个单一的进程时间。

Process p = exampleProcess
return p.TotalProcessorTime

如何获得总的处理器时间?如果我执行:

,我会得到该进程的CPU使用百分比吗?
return p/totalProcessorTime

?

如何在c#中获得总的处理器时间

您可以使用PerformanceCounter:

PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName);
double currentCpuPercent = cpuCounter.NextValue();

不,你不能用Process除以TimespanTotalProcessorTime是实际花费在执行代码上的时间的度量。它是一个绝对数。如果您想要一个相对的数字,那么您需要度量流程运行了多长时间。用ExitTime减去StartTime。这样的:

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;

您想要总的处理器时间,而不是局限于单个进程,对吗?这是否意味着您需要系统上所有进程的处理器时间?这难道不等于系统启动后经过的墙时间吗?如果是这样,GetTickCount64就可以了。