MVC Mini Profiler“持续时间”vs“有孩子”

时间:2011-11-21 19:50:42

标签: mvc-mini-profiler

我非常喜欢这个工具,但是我找不到任何指导来帮助解释迷你探查器的结果。我似乎每个动作方法都有一个可扩展的标签,我可以清楚地弄清楚我手动创建的探查器步骤的持续时间,但我不能直观地(或在谷歌的帮助下)找出“持续时间”和“与孩子“。打字这个问题我想出了一个猜测:“持续时间”是否意味着“排除孩子?”

1 个答案:

答案 0 :(得分:4)

持续时间是受监控代码的执行时间减去任何报告的子项。 MVC Mini Profiler使用层次结构来跟踪不同代码路径的时序。该层次结构不是基于函数创建的,而是根据您记录调用的方式创建的。

以下是项目的示例示例。有一个页面调用“ListService”,它执行“getList”,然后执行“FilListWithOptions”,依此类推。

http://www.temppage.com:80/something.aspx 
 ListService
   getList                                
   FillListWithOptions  
    QtyBreakPrices  
    FillProductDataWithOptions  
     GetProducts    
 ProductService

这些不必是单独的函数,只是嵌套在监视代码中的嵌套代码:

using (profiler.Step("ListService"))
{
    using (profiler.Step("getList"))
    { // something more interesting here
    }
    using (profiler.Step("FillListWithOptions"))
    { // and here
    }
}
using (profiler.Step("ProductService"))
{      
    // blah
}

http://www.temppage.com:80/something.aspx持续时间可能是615.2毫秒,带孩子的 是2222.5毫秒。 “ListService”的持续时间为3ms,带有子项为807ms。

因此,根据这些统计数据,我们可以确定您是正确的; 持续时间仅是执行的代码,不包括已报告的子代。 有孩子结合持续时间孩子时间来获得总数。

但是“ProductService”没有任何报告的孩子,持续时间带孩子在400ms时是相同的。我知道ProductService会调用其他调用其他函数的函数。分析器不会将它们视为子项,因为它不知道它们。除非用using语句包装它们,否则它会报告相同的情况。