代码之家  ›  专栏  ›  技术社区  ›  DarthVader

.NET核心性能分析器(通过代码)

  •  2
  • DarthVader  · 技术社区  · 8 年前

    我开发了一个中间件,它在调用next之前启动一个秒表,在响应可用时停止,然后记录经过的时间。

    这一切都很好。但它没有提供我的分解,即:在调用中哪个方法调用花费了多少?例如:如果我在一个请求中有4个方法调用,我想知道每个方法调用的持续时间。

    我认为,中间件不足以达到这个目的,而不必把装饰器放在整个地方,我怎么才能做到这一点呢?

    谢谢。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Leonid Vasilev    8 年前

    可能,您必须手动插入最有趣的代码片段。

    尽管如此,仍有注射IL的解决方案(参见 MSIL Injection 我不认为在不改变现有代码库的情况下在任意位置注入代码是可能的。然而,在许多情况下,使用decorator对大部分现有代码(假定它被合理地划分为模块)进行检测相对容易。例如添加自定义分析 DelegatingHandler HttpClient 或使用配置文件 SqlConnection 工厂。

    为了检查调用层次结构和延迟,您可以利用 MiniProfiler ,它是内置的装饰器和 RenderPlainText() 方法。或者你可以利用 Metrics.NET 用于检查与吞吐量相关的度量(如直方图和计数器)的库。