我已经研究了很多,但我所能找到的是如何得到一个单一的处理时间。
Process p = exampleProcess return p.TotalProcessorTime
如何获得总处理器时间?如果执行以下操作,是否可以获得该进程的CPU使用率百分比:
return p/totalProcessorTime
?
vojdkbi01#
您可以使用PerformanceCounter:
PerformanceCounter
PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName); double currentCpuPercent = cpuCounter.NextValue();
a5g8bdjr2#
不,你不能用Process除以Timespan。TotalProcessorTime是执行代码实际花费的时间的度量。它是一个绝对数字。如果你想要一个相对数字,那么你需要度量进程已经运行了多长时间。从ExitTime中减去StartTime。如下所示:
Process
Timespan
TotalProcessorTime
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;
bqjvbblv3#
您想要的是总的处理器时间,而不是仅限于单个进程,对吗?这是否意味着您想要系统上所有进程的处理器时间?这是否与系统启动后所用的时间相同?如果是这样,GetTickCount64就可以了。
3条答案
按热度按时间vojdkbi01#
您可以使用
PerformanceCounter
:a5g8bdjr2#
不,你不能用
Process
除以Timespan
。TotalProcessorTime
是执行代码实际花费的时间的度量。它是一个绝对数字。如果你想要一个相对数字,那么你需要度量进程已经运行了多长时间。从ExitTime
中减去StartTime
。如下所示:bqjvbblv3#
您想要的是总的处理器时间,而不是仅限于单个进程,对吗?这是否意味着您想要系统上所有进程的处理器时间?这是否与系统启动后所用的时间相同?如果是这样,GetTickCount64就可以了。