我有一个winforms应用程序,它通常占用大约2-4%的CPU。我们看到一些峰值高达27%的CPU在有限的次数。什么是最好的分析工具来确定是什么导致了这个峰值。我们使用了点跟踪,但我不知道如何准确地将其映射到CPU峰值?
感谢你的帮助
发布于 2008-09-19 19:47:56
我以前用过两个分析工具--RedGate的ANTS分析器和Visual Studio Team System中的内置分析器。
我使用RedGate (http://www.red-gate.com/products/ants_profiler/index.htm)分析器已经有一段时间了,尽管我最近才使用了Visual Studio2008的内置分析器。
话虽如此,我觉得RedGate产品使用起来更直观。当我使用RedGate产品时,令我沮丧的一件事是,我不能指示分析器仅从某个点开始分析我的代码-我有一个性能影响,只有在执行了相当多的代码之后才能达到,因此污染了我的结果。从那时起,他们可能已经添加了这一功能。
Visual Studio的内置版本仅在其非常高端的产品版本中可用。如果我错了,有人纠正我,但我不认为即使是“专业”版本也没有分析器。我目前使用的是Team System Developer Edition,它确实有代码分析工具。
但是,VS版本所做的一件事是,允许您暂停分析,甚至在分析暂停的情况下启动您的应用程序,这样您就可以真正专注于非常具体的性能。当您试图理解分析结果时,这会非常有帮助。
编辑:这两个工具都会显示内存使用情况、调用特定方法的次数以及在每个方法中花费的时间。据我所知,它们不会显示任何给定时间点的CPU使用情况。但是,CPU使用率和在给定代码块中花费的时间之间可能存在很强的相关性。
如果你可以通过调用应用程序中的某些操作来一致地复制CPU峰值,那么我要做的就是尝试使用VS分析器,在分析暂停的情况下启动应用程序,在执行任何通常会导致峰值的操作之前启用分析,并检查这些结果。
当然,这假设您有某种确定性行为来重新创建尖峰。如果不是..。您可能会考虑将线程进程或垃圾回收作为影响性能的候选方案。
发布于 2008-09-26 04:40:41
我发现来自Compuware http://www.compuware.com/的DevPartner是一个很好的分析工具。不幸的是,目前看来他们还不支持VS2008。
发布于 2008-10-01 16:17:41
另外,这个峰值真的令人担忧吗?你在哪种硬件上看到了这个?在四核CPU上达到27%的峰值可能会引起担忧,但在800 but的P3上就不会了。
它会保持多长时间的峰值?@Matt有一个很好的观点,垃圾收集可能是错误的。或者潜在地交换到磁盘。
它是在很长一段时间内影响整体系统性能,还是偶尔影响几秒钟?
这并不是说找到一个解决方案不应该令人担忧,但它有多重要?
https://stackoverflow.com/questions/104831
复制相似问题