Windows 8 如何精确测量后台任务中的CPU使用率?

Windows 8 如何精确测量后台任务中的CPU使用率?,windows-8,microsoft-metro,windows-runtime,Windows 8,Microsoft Metro,Windows Runtime,WinRT中后台任务的CPU使用配额为1秒,如果在锁屏上,则为2秒。问题是如何准确地测量CPU使用率-我想知道我的代码是否在这2秒配额下运行?我想只使用DateTime。在执行任务之前和之后使用DateTime不是正确的方法。 MSDN关于后台任务的文章: 我也有同样的问题 如果启动任务管理器,在应用程序历史记录选项卡下,您可以查看各种应用程序的资源使用统计信息。其中之一是CPU时间。问题是它不是平均值,但它只显示CPU总使用时间 如果您需要平均时间,诀窍是在应用程序中为任何后台活动保留一个计数

WinRT中后台任务的CPU使用配额为1秒,如果在锁屏上,则为2秒。问题是如何准确地测量CPU使用率-我想知道我的代码是否在这2秒配额下运行?我想只使用DateTime。在执行任务之前和之后使用DateTime不是正确的方法。
MSDN关于后台任务的文章:

我也有同样的问题

如果启动
任务管理器
,在
应用程序历史记录
选项卡下,您可以查看各种应用程序的资源使用统计信息。其中之一是
CPU时间
。问题是它不是平均值,但它只显示CPU总使用时间

如果您需要平均时间,诀窍是在应用程序中为任何后台活动保留一个计数,然后将整个时间除以该值,这样您将得到一个平均时间。

我使用了WinAPI

文档上写着“仅限桌面应用”,但从技术上讲,它甚至出现在手机上:

    [DllImport( "KERNELBASE.DLL", SetLastError = true )]
    static extern IntPtr GetCurrentProcess();

    // NB! Undocumented API, won't pass marketplace checks.
    [DllImport( "KERNELBASE.DLL", SetLastError = true )]
    [return: MarshalAs( UnmanagedType.Bool )]
    static extern bool GetProcessTimes( IntPtr hProcess, out long lpCreationTime, out long lpExitTime, out long lpKernelTime, out long lpUserTime );
在PC上,将KERNELBASE.DLL替换为Kernel32.DLL

这不会通过市场认证,但应该足以让您对您的后台任务进行基准测试


启动时调用GetProcessTimes,计算
long startTime=KernelTime+UserTime
。完成后调用GetProcessTimes,计算
(KernelTime+UserTime)-startTime
,然后获得数据。度量单位是100纳秒,就像TimeSpan一样。

我还认为i5可以运行比基于ARM的处理器更多的代码。。。我是否需要最慢的处理器来测试我的应用程序是否不超过2秒?好的一点,如果是这样的话,我们在低端ARM平板电脑上的后台工作的计算能力要比在Core-i7时钟桌面上的低得多。网络工作者和后台工作一样吗?我想获取和缓存图像,但2秒钟的处理时间似乎不够(特别是因为我想裁剪和保存它们)。这是一个一次性任务还是会重复运行?我想这是我们现在可以测量CPU使用率的最好方法,谢谢。