如何以C#表示处理器总时间?

如何以C#表示处理器总时间?,c#,.net,visual-studio,process,cpu-usage,C#,.net,Visual Studio,Process,Cpu Usage,我已经做了很多研究,但我能找到的只是如何在一个单一的进程时间内获得数据 Process p = exampleProcess return p.TotalProcessorTime 如何获取处理器的总时间?如果执行以下操作,我将获得该进程的CPU使用率百分比: return p/totalProcessorTime ?您想要的是处理器总时间,而不限于单个进程,对吗?这是否意味着您需要系统上所有进程的处理器时间?这不是和系统启动后的墙时间相同吗?如果是这样的话,就可以了。您想要的是处理器的总时

我已经做了很多研究,但我能找到的只是如何在一个单一的进程时间内获得数据

Process p = exampleProcess
return p.TotalProcessorTime
如何获取处理器的总时间?如果执行以下操作,我将获得该进程的CPU使用率百分比:

return p/totalProcessorTime

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

您想要的是处理器的总时间,而不限于单个进程,对吗?这是否意味着您需要系统上所有进程的处理器时间?这不是和系统启动后的墙时间相同吗?如果是这样的话,你就可以做了。

你可以使用:

您可以使用:


不,你不能用时间跨度来划分进程。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;

不,你不能用时间跨度来划分进程。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;

你能解释一下你所说的“处理器总时间”是什么意思吗?你能解释一下你所说的“处理器总时间”是什么意思吗?每个处理器核心的CPU时间不是单独计算的吗?也就是说,如果一个进程完全占用两个CPU核心,那么CPU总时间将是实际运行时间的两倍?这一点很好。然后是GetTickCount64*GetProcessorCount。每个处理器核的CPU时间不是单独计算的吗?也就是说,如果一个进程完全占用两个CPU核,那么CPU总时间将是实际运行时间的两倍?这一点很好。然后是GetTickCount64*GetProcessorCount。