时间:2011-01-06 19:16:25

标签: c++ windows debugging device-driver measurement

3 个答案:

答案 0 :(得分:3)

您可以使用SysInternals Utilities中的各种工具(现在是Microsoft产品,请参阅http://technet.microsoft.com/en-us/sysinternals/bb545027)在进入之前提供一个基本想法。在您的情况下,进程资源管理器(procexp)和进程监视器(procmon)执行一个体面的工作。在进行剖析深入分析之前,它们可以用来让您了解它是什么类型的缓慢的基本概念。

然后您可以使用xperf http://msdn.microsoft.com/en-us/performance/default向下钻取。通过正确的设置,此工具可以为您提供导致缓慢的确切功能,而无需将分析代码注入现有程序。已有PDC视频谈论如何使用它http://www.microsoftpdc.com/2009/CL16,我强烈推荐这个工具。根据我自己的经验,最好首先使用procexp / procmon观察,然后使用xperf定位你的嫌疑人,因为如果不以智能方式过滤,xperf会产生大量信息。

在涉及锁定争用的某些困难案例中,Windows调试工具(windbg)将非常方便,并且有专门的书籍谈论它的用法。这些书通常谈论悬挂检测,这里有很多技术也可以用来检测慢度。 (例如!失控)

答案 1 :(得分:2)

也许您可以使用ETW这个?不太确定它会帮助你看到哪一行会导致什么,但它应该可以让你全面了解你的应用程序是如何做的。

答案 2 :(得分:0)

要实时查找程序的CPU /内存/磁盘使用情况,可以使用Windows附带的资源监视器和任务管理器程序。您可以通过打印systime找到代码块相对于其他代码块所花费的时间。记住不要一次做太多的监控,因为这可能会导致你的计算失败。

如果您知道程序占用了多少CPU时间以及代码块占用的时间百分比,那么您可以估计代码块大约需要多少CPU时间。