我需要调试慢速应用程序的性能,这种应用程序有时会变慢,有时候工作正常。
真的很难,我找不到问题所在。
我想过IL编织和像PostSharp这样的工具。但由于我只想要一个非常具体的要求,我想也许还有其他我不熟悉的方法/技巧。
我需要记录每个方法的总执行时间。我怎么能得到它? IL编织是唯一的选择吗?
答案 0 :(得分:3)
您使用分析器执行此操作,例如C#dotTrace。如果您有Resharper Ultimate,则包括dotTrace。
.NET分析器不仅可以测量所有方法的时间,还可以测量.NET垃圾回收的时间。
还有较新版本的Visual Studio中提供的分析器。
虽然也可以使用IL编织来完成,但您不会为此目的编译额外的版本。使用分析器,您可以更改设置,而无需每次都重新编译代码。
答案 1 :(得分:0)
其他答案中提到的分析工具允许您在开发机器上的受控环境中分析应用程序性能。这可以帮助您找到需要优化的代码部分。
但是,您可能还希望监视生产环境中的应用程序性能。这可以帮助您找出代码外部和环境特定的其他因素正在影响性能。
对于第二个用例,您可以查看PostSharp诊断框架(http://doc.postsharp.net/logging)。它允许您在应用程序中包含详细的日志记录,包括方法执行时间,并且具有高度可配置性。可以在配置中打开和关闭日志记录,因此无需创建两个单独的应用程序构建。
另一个需要考虑的选项是安装在生产环境中的应用程序性能监视工具。快速搜索将为您提供New Relic APM,DynaTrace,AppDynamics等示例。
最后,您可以根据自己的使用案例和预算选择具体的工具。