Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用迷你剖析器_C#_Mvc Mini Profiler - Fatal编程技术网

C# 使用迷你剖析器

C# 使用迷你剖析器,c#,mvc-mini-profiler,C#,Mvc Mini Profiler,当使用mini profiler时,这是否意味着生产代码将被使用块“打乱” using (profiler.Step("Set page title")) { ViewBag.Title = "Home Page"; } 我想如果它是一次性测试,我可以删除它,但通常您希望将它们保留在代码库中以进行持续评测。这实际上是一个糟糕的示例-您通常不会评测一些琐碎的东西 最终,这是你想要描述的内容。对于ADO.NET之类的东西有一个钩子,但是如果你想让它在这之外分析一些东西,是的:你需要帮助它

当使用mini profiler时,这是否意味着生产代码将被使用块“打乱”

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

我想如果它是一次性测试,我可以删除它,但通常您希望将它们保留在代码库中以进行持续评测。

这实际上是一个糟糕的示例-您通常不会评测一些琐碎的东西

最终,这是你想要描述的内容。对于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(…)
方法

无论你是否认为这是“乱丢垃圾”:

  • 它强调(事实上,通常是一个要求)——有代码来支持您的功能是可以的!事实上,它是您考虑(并衡量)新代码/修改代码的性能的一种证据
  • 这完全取决于您如何使其粒度
  • 因此,它为用户提供了一个有意义的详细级别—日志中没有大量的琐事,也没有大多数日志的性能侵入性

非常感谢,顺便说一句,您是如何在每个输出结果的页面上进行下拉的?你是不是不知何故钩住了探查器?i、 e.在request.items cache?@codecompleting中保存每个日志有一个可插入的API,用于提供短期和长期存储。默认情况下,它使用内存中的ASP.NET存储IIRC,但在内部,我们长期使用SQL Server(为此编写插件很容易)。这就是问题所在吗?我想问这样一个问题:奇怪的是,您如何为给定的请求聚合所有查询。使用request.items?