这是一个由两部分组成的问题,我想在堆栈上发布我的代码以帮助其他人完成相同的任务。
问题 1:
我有一个代码子集,我相信它可以根据测量间隔正确测量 CPU 使用率(跨系统中尽可能多的内核,根据检索的次数)——我在线程调用中使用了 1 秒。
我不得不从网络上的极少数文章和 C++ 代码中解读这一点。我的问题是,对于问题 1,我所做的是否正确?
有时返回的值是一个负数,这就是我乘以 -1 的原因。同样,我假设,因为文档很少,这就是我应该做的。
我有以下代码:
public static class Processor
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool GetSystemTimes(out ComTypes.FILETIME lpIdleTime, out ComTypes.FILETIME lpKernelTime, out ComTypes.FILETIME lpUserTime);
private static TimeSpan _sysIdleOldTs;
private static TimeSpan _sysKernelOldTs;
private static TimeSpan _sysUserOldTs;
static Processor()
{
}
public static void Test()
{
ComTypes.FILETIME sysIdle, sysKernel, sysUser;
if(GetSystemTimes(out sysIdle, out sysKernel, out sysUser))
{
TimeSpan sysIdleTs = GetTimeSpanFromFileTime(sysIdle);
TimeSpan sysKernelTs = GetTimeSpanFromFileTime(sysKernel);
TimeSpan sysUserTs …
Run Code Online (Sandbox Code Playgroud)