迷你探测器

cod*_*ing 6 c# mvc-mini-profiler

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

using (profiler.Step("Set page title"))
{
    ViewBag.Title = "Home Page";
}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ell 9

这实际上是一个不好的例子 - 你通常不会描述一些微不足道的东西.

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

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

...
using(profiler.Step("Refresh customer"))
{
    // ...
}
...
Run Code Online (Sandbox Code Playgroud)

然后只有当你发现放大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"))
    { ... }
}
...
Run Code Online (Sandbox Code Playgroud)

还有.Inline(...)一种用于单独命令的方法.

你是否认为这是"乱扔垃圾":

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