如何获取进程使用的CPU周期数

Mat*_*uwe 12 c# vb.net performance process performancecounter

我需要使用C#(或VB.Net)获取特定进程使用的CPU周期数.此信息可在Sysinternal的Process Explorer中的Process properties弹出窗口中找到.例如,我正在使用此消息发布的浏览器目前使用了18,521,360,165个cyles(给予或接受了几亿).有谁知道如何从.Net应用程序获取此信息?我知道如何获得CPU使用率(百分比),但这不是我正在寻找的.我需要一种方法来比较在不同时间运行的两个不同进程之间的CPU使用情况.

谢谢你,马特

更新:
为什么我需要这个?我是本地.Net用户组的领导者,我们正在运行代码挑战,开发人员提交代码来解决问题.我需要一种方法来衡量一个条目与另一个条目的表现.目前我正在使用计时器来衡量性能.服务器100%专用于此,但这并不能保证可能同时发生其他事情.显然,这是各种潜在问题,但总的来说,它是相当准确的.测量所使用的CPU周期数将是一种几乎万无一失的方法来衡量某人的入口对另一个人的表现.我确信有人可以在这一点上打洞 - 不需要在这一点上尝试.;-)我希望这有助于解释我的问题背后的原因以及为什么计时器不足以解决我的问题.

Gab*_*abe 20

Process Explorer调用QueryProcessCycleTime以获取该信息.您可能必须使用P/Invoke来调用它.我希望它的P/Invoke签名看起来像:

[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool QueryProcessCycleTime(IntPtr ProcessHandle, out ulong CycleTime);
Run Code Online (Sandbox Code Playgroud)

  • @Matt:您也可以考虑使用`QueryThreadCycleTime`来隔离您感兴趣的线程. (3认同)