C# 关于在代码中添加检测的库/API建议

C# 关于在代码中添加检测的库/API建议,c#,.net-2.0,wmi,C#,.net 2.0,Wmi,如果我想在我的代码中添加一些工具,以获取特定方法执行所需的时间等指标,有人推荐使用windows内置或任何第三方库吗?如果您想在运行时使用此工具,您可能应该脱机使用探查器。在可能的情况下,我会避免进行任何检测,因为这需要时间,因此会导致更多的性能问题 谷歌搜索RedGate ANTS Profiler或JetBrains dotTrace。如果您有VS2010 Premium,它有一个内置的。这将为您提供一个方法级的时间细分。我已经看到PostSharp AOP框架实现了这一点,它连接到Wind

如果我想在我的代码中添加一些工具,以获取特定方法执行所需的时间等指标,有人推荐使用windows内置或任何第三方库吗?

如果您想在运行时使用此工具,您可能应该脱机使用探查器。在可能的情况下,我会避免进行任何检测,因为这需要时间,因此会导致更多的性能问题


谷歌搜索RedGate ANTS Profiler或JetBrains dotTrace。如果您有VS2010 Premium,它有一个内置的。这将为您提供一个方法级的时间细分。我已经看到PostSharp AOP框架实现了这一点,它连接到Windows性能计数器(
System.Diagnostics.PerformanceCounter
)。他们的一段介绍性示例代码展示了如何做到这一点:

如果您希望将这些度量部署到生产环境中,并以实时方式度量性能(对正在运行的系统进行诊断),这可能是一个不错的选择


如果您只想定位代码中的瓶颈,而不需要进行实时诊断,我建议您只需使用探查器,如VS或中内置的探查器(正如Chris已经建议的)。然后根据代码运行生产数据的修订副本,以便性能度量与生产相匹配。

通常情况下,探查器将负责度量性能


如果你需要自己测量时间,用秒表跟踪时间就足够了。

我不需要实时监控这些时间。我的问题是,一个应用程序正在10个不同的客户位置运行。给定的功能在这10个位置中有3个运行缓慢。我无法在这些客户位置分析应用程序,但如果我有某种类型的检测,它会让我知道哪些方法需要很长时间。@Silverlight:如果它已经在运行,而您无法重新部署,那么您可能会被卡住。但是如果您可以重新部署,那么perf计数器是标准的方法,您可以通过AOP使用这些perf计数器插入代码。我在这里使用了错误的“实时”——我的意思是,您可以在运行的系统中对调用进行实时测量,而不是依赖于离线复制相同的场景。我已编辑我的答案以删除不正确的术语:)