迷你探测器

时间:2011-08-16 18:41:59

标签: c# mvc-mini-profiler

使用迷你探查器时,这是否意味着生产代码将使用块“乱丢”?

using (profiler.Step("Set page title"))
{
    ViewBag.Title = "Home Page";
}

我想如果它是一次性测试我可以删除它,但通常你想将它们保存在代码库中以进行持续分析。

1 个答案:

答案 0 :(得分:9)

这实际上是一个不好的例子 - 你通常不会描述一些微不足道的事情。

最终,它是您想要描述的选修课。对于像ADO.NET这样的东西有一个钩子,但是如果你想让它分析之外的东西,是的:你需要一臂之力。

Re“乱七八糟”,好吧,这是主观的。最好的方法通常是将仪器限制为非常高级别操作,然后只需根据需要进行更细粒度的操作(由于已识别的问题点);例如,你可能有:

...
using(profiler.Step("Refresh customer"))
{
    // ...
}
...

然后只有当你发现放大1800米放大时:

...
using(profiler.Step("Refresh customer"))
{
    using(profiler.Step("Query LDAP"))
    { ... }
    using(profiler.Step("Query primary customer DB"))
    { ... }
    using(profiler.Step("Query aux db"))
    { ... }
    using(profiler.Step("Print, scan, and OCR"))
    { ... }
}
...

单个命令还有一个.Inline(...)方法。

你是否认为这是“乱扔垃圾”:

  • 它强调performance is a feature(实际上,通常是一项要求) - 可以使用代码来支持您的功能!实际上,这是一种证据表明你已经认为(和测量)了一段新的/改变过的代码的性能
  • 完全具有上下文的程度
  • 因此,
  • 为用户提供了有意义的详细程度 - 在日志中没有大量的琐事,并且没有大多数日志记录的性能侵入性