【发布时间】:2011-09-25 11:47:11
【问题描述】:
我需要使用 C#(或 VB.Net)获取特定进程使用的 CPU 周期数。此信息在 Sysinternal 的 Process Explorer 中的 Process properties 弹出窗口中可用。例如,我正在使用发布此消息的浏览器当前使用了 18,521,360,165 个循环(给或取几亿)。有谁知道如何从 .Net 应用程序获取这些信息?我知道如何获取 CPU 使用率(百分比),但这不是我想要的。我需要一种方法来比较在不同时间运行的两个不同进程之间的 CPU 使用率。
谢谢你, 马特
更新:
为什么我需要这个?我是本地 .Net 用户组的负责人,我们正在运行代码挑战,开发人员提交代码以解决问题。我需要一种方法来衡量一个条目相对于另一个条目的性能。目前我正在使用计时器来衡量性能。服务器 100% 致力于此,但这并不能保证同时发生其他事情。显然,这充满了各种潜在的问题,但总的来说,它是相当准确的。测量所使用的 CPU 周期数将是一种几乎万无一失的方法来衡量某人的条目相对于另一个条目的执行情况。我敢肯定,有人可以在这一切上打洞——此时无需尝试。 ;-) 我希望这有助于解释我的问题背后的原因以及为什么计时器不足以解决我的问题。
【问题讨论】:
-
CPU 周期是包括还是不包括 CPU 周期的计数?
-
理想情况下,我会从不同的过程中进行计数,所以希望排除,但包括也可以。我只需要同一进程的两次运行之间的相对差异(给定不同的输入)
-
我很想知道您为什么对周期数感兴趣。出于分析目的,计时到毫秒通常就足够了。
-
@Charlie Salts :通常但并非总是如此——我处理的程序的主循环上限为 16.6 毫秒,因此我需要分析的函数都是微量级和纳秒。
-
@Charlie:只需使用秒表即可测量挂钟时间。无法确定调度程序在此期间让您拥有 CPU 多长时间。
标签: c# vb.net performance process performancecounter