我之前使用过 2 个分析工具 - RedGate 的 ANTS 分析器和 Visual Studio Team System 中的内置分析器。
自从我使用 RedGate 以来已经有一段时间了 (http://www. red-gate.com/products/ants_profiler/index.htm) 探查器,尽管我最近使用了 Visual Studio 2008 中的内置探查器。
话虽这么说,我觉得 RedGate 产品使用起来更直观。当我使用 RedGate 产品时,让我感到沮丧的一件事是,我无法指示分析器仅从某个点开始分析我的代码 - 我的性能受到影响,直到相当数量的代码完成后才能达到性能影响。已经执行了,因此污染了我的结果。他们可能从那时起就添加了该功能。
Visual Studio 的内置版本仅在该产品的非常高端版本中可用。如果我错了,有人纠正我,但我认为即使是“专业”版本也没有分析器。我目前使用的是 Team System Developer Edition,它确实有代码分析工具。
VS 版本确实做的一件事是使您能够暂停分析,甚至在分析暂停的情况下启动应用程序,这样您就可以真正专注于非常具体的性能。当您尝试理解分析结果时,这非常有帮助。
编辑:这两个工具都会向您显示内存使用情况、调用特定方法的次数以及每个方法花费的时间。据我所知,他们没有做的是向您显示任何给定时间点的 CPU 使用情况。然而,CPU 使用率和给定代码块所花费的时间之间可能存在很强的相关性。
如果您可以通过调用应用程序中的某些操作来一致地复制 CPU 峰值,那么我要做的就是尝试使用 VS 分析器,在分析暂停的情况下启动应用程序,在执行通常操作之前启用分析结果尖峰,并检查这些结果。
当然,这假设您具有某种确定性行为来重新创建峰值。如果没有......您可能会考虑将线程进程或垃圾收集作为性能影响的候选者。