Question

I have a simple request that is being profiled, listed below.

public MyResponse GetOrders(OrdersRequest request)
{
    var profiler = MiniProfiler.Current;
    using (profiler.Step("GetOrders Service Requests"))
    {
        using (profiler.Step("_externalRepository.GetOrders"))
        {

        }
    }
    return result;
}

That yields the following rows in the database when executed.

sql query of method

So my question is how does the DurantionMilliseconds for the root object correlate to the timings of it's children? I see 73.400 and assume this is the total across this operation, is that correct?

Versions:

<package id="MiniProfiler" version="3.0.10-beta7" targetFramework="net45" />
<package id="MiniProfiler.EF5" version="3.0.10-beta1" targetFramework="net45" />
Was it helpful?

Solution

Yes, a Timing step's duration includes its children Timings' durations.

It's easier to visualize as a tree*:

> http://localhost:8203/ExternalService.svc   73.4 ms
>> GetOrders Service Requests                 56.1 ms
>>> _externalRepository.GetOrders             55.9 ms

So the root timing (i.e. the entire request) took 73.4 ms; GetOrders Service Requests was 56.1 ms of that entire 73.4 ms; and _externalRepository.GetOrders was 55.9 ms of its parent's 56.1 ms.

* the MiniProfiler extension method RenderPlainText() can output this format.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top