6

使用迷你分析器时,这是否意味着生产代码将被使用块“乱扔”?

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

我想如果它是 1-off 测试,我可以将其删除,但通常您希望将它们保留在代码库中以进行持续分析。

4

1 回答 1

9

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

最终,您想要描述的内容是可选的。像 ADO.NET 这样的东西有一个钩子,但如果你想让它分析除此之外的东西是的:你需要帮助它。

重新“乱扔垃圾”,嗯,这是主观的。最好的方法通常是将检测限制在非常高级别的操作中,然后仅在您发现需要时使用更精细的操作进行放大(由于已识别的问题点);例如,您可能有:

...
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(...)一种用于单个命令的方法。

无论您是否认为这是“乱扔垃圾”:

  • 它强调性能是一种特性(实际上,通常是一种要求)——有代码来支持你的特性是可以的!事实上,这是一种证明您已经考虑(并衡量)新/更改代码的性能的形式
  • 它完全取决于上下文你使它的粒度
  • 因此,它为用户提供了有意义的详细信息——日志中没有大量的琐事,也没有大多数日志记录的性能侵入性
于 2011-08-16T19:57:17.537 回答