Miniprofiler不会分析赋值语句/快速步骤

时间:2013-08-14 15:40:16

标签: asp.net-mvc-4 mvc-mini-profiler

我正在使用带有ASP.NET MVC 4的StackExchange Miniprofiler。我目前正在尝试使用昂贵的表达式来分配类的成员变量,该表达式生成要分配的值。 Miniprofiler似乎不想描述赋值语句。我简化了我的代码以突出显示错误:

    public ActionResult TestProfiling()
    {
        var profiler = MiniProfiler.Current;
        using (profiler.Step("Test 1"))
            Thread.Sleep(50);
        int sue;
        using (profiler.Step("Test 2"))
        {
            sue = 1;
        }
        if (sue == 1)
            sue = 2;
        using (profiler.Step("Test 3"))
        {
            Thread.Sleep(50);
            int bob;
            using (profiler.Step("Inner Test"))
            {
                bob = 1;
            }
            if (bob == 1)
                bob = 2;
        }
        return View();
    }

N.B。 if语句只是为了避免编译器警告。

测试1和测试3显示在结果页面的Miniprofiler部分中。测试2和内部测试没有。但是,如果我用sleep语句替换Test 2或Inner Test的内容,它们会输出到结果页面。

这里发生了什么?即使我在一个不出现的测试中替换了简单的赋值语句,即

using (profiler.Step("Test 2"))
{
    ViewModel.ComplexData = MyAmazingService.LongRunningMethodToGenerateComplexData();
}

使用更复杂的一个,测试2步仍然无法输出到渲染的Miniprofiler部分。为什么不使用Miniprofiler分析赋值语句?

编辑:代码示例现在对应于文本。

Edit2 :在进一步挖掘之后,似乎问题不在于赋值语句。看来输出结果中是否显示某些内容取决于执行所需的时间。即。

using (profiler.Step("Test 2"))
{
    sue = 1;
    Thread.Sleep(0);
}

使用上述代码,Miniprofiler结果中不显示测试2。

using (profiler.Step("Test 2"))
{
    sue = 1;
    Thread.Sleep(10);
}

使用上面的代码测试2现在显示在Miniprofiler结果中。

所以看起来我的LongRunningCodeToGenerateComplexData变得非常快......但Miniprofiler的预期行为是不显示花费很少时间的步骤?

2 个答案:

答案 0 :(得分:2)

只需点击探查器结果右下角的“显示琐事”即可。

这应该显示所有较小的行为

答案 1 :(得分:0)

似乎问题是Miniprofiler没有显示执行时间少于3ms的步骤的结果。

编辑:来自Miniprofiler文档。

TrivialDurationThresholdMilliseconds任何持续时间小于或等于此的定时步骤将默认隐藏在UI中;默认为2.0毫秒。

http://community.miniprofiler.com/permalinks/20/various-miniprofiler-settings