【问题标题】:How to measure the execution time of all methods in .NET Core?如何测量 .NET Core 中所有方法的执行时间?
【发布时间】:2018-02-22 18:34:23
【问题描述】:

我需要调试一个缓慢的应用程序的性能,该应用程序有时会变慢,有时运行良好。

这真的很难,我找不到问题所在。

我想到了 IL 编织和 PostSharp 之类的工具。但由于我只想要一个非常具体的要求,我想也许还有其他我不熟悉的方式/技术。

我需要记录每个方法的总体执行时间。我怎么能得到那个? IL weaving 是唯一的选择吗?

【问题讨论】:

  • 这是像 Visual Studio 中内置的 CPU 分析器的工作,而不是 PostSharp
  • 为此引入 MSIL 织布器将是疯狂的。
  • 也许我不明白。我有一个非常具体的客观需求,我问了它,突然间我得到了 2 票反对,为什么?问一个愚蠢的问题?对某人来说似乎很愚蠢的问题对其他人来说可能不是一个真正的问题吗?而不是仇恨行为有帮助。
  • 我没有投反对票,但这个问题主要是基于意见的。如果您正在考虑使用 PostSharp,那么您可能正在使用 Visual Studio。这意味着您可以使用已经建议的内置分析工具。他们工作得很好。

标签: c# .net-core aop postsharp


【解决方案1】:

您可以使用探查器执行此操作,例如dotTrace 用于 C#。如果您有 Resharper Ultimate,则包括 dotTrace。

.NET 分析器不仅测量所有方法的时间,还测量 .NET 垃圾回收的时间。

在较新版本的 Visual Studio 中还提供了一个分析器。

虽然也可以使用 IL 编织来完成,但您不会为此目的编译额外的版本。使用分析器,您可以更改设置,而无需每次都重新编译代码。

【讨论】:

    【解决方案2】:

    其他答案中提到的分析工具允许您在开发机器上的受控环境中分析应用程序性能。这可以帮助您找到需要优化的代码部分。

    但是,您可能还想监控生产环境中的应用程序性能。这可以帮助您找出代码外部和特定于环境的哪些其他因素正在影响性能。

    对于第二个用例,您可以查看 PostSharp 诊断框架 (http://doc.postsharp.net/logging)。它允许您在应用程序中包含详细的日志记录,包括方法执行时间,并且高度可配置。可以在配置中打开和关闭日志记录,因此无需创建两个单独的应用程序构建。

    另一个需要研究的选项是安装在生产环境中的应用程序性能监控工具。快速搜索将为您提供 New Relic APM、DynaTrace、AppDynamics 等示例。

    最后,您可以根据自己的用例和预算来选择特定的工具。

    【讨论】:

    • PostSharp 是否支持 .NET Core?
    • PostSharp 5.0 支持 .NET Core 1.1 (doc.postsharp.net/requirements)。 PostSharp 5.1 目前处于预览阶段,支持 .NET Core 2.0。
    猜你喜欢
    • 2012-06-16
    • 2012-05-14
    • 1970-01-01
    • 2023-04-07
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多