Skip to content

Latest commit

 

History

History
65 lines (60 loc) · 1.41 KB

File metadata and controls

65 lines (60 loc) · 1.41 KB

scope-timer

Scope timer for dotnet with inner scopes

public void MyMethod()
{
    using (var scope = new Scope(GetType().Name + "." + nameof(MyMethod)))
    {
        using (scope.Inner("SomeInnerScope1"))
        {
            ...
        }
        
        using (var innerScope2 = scope.Inner("SomeInnerScope2"))
        {
            ...
            using (innerScope2.Inner("SomeExtraInnerScope"))
            {
                ...
                ...
            }
            ...
        }
        
        using (scope.Inner("SomeInnerScope3"))
        {
            ...
        }
        
        var timing = scope.Timing;
        ... /// Log timinig somewhere
    }
}

Example of data

"timing": {
    "scopeName": "MyService.MyMethod",
    "elapsed": "00:00:00.0755708",
    "innerScopes": [
        {
            "scopeName": "SomeInnerScope1",
            "elapsed": "00:00:00.0074690",
            "innerScopes": []
        },
        {
            "scopeName": "SomeInnerScope2",
            "elapsed": "00:00:00.0434156",
            "innerScopes": [
                {
                    "scopeName": "SomeExtraInnerScope",
                    "elapsed": "00:00:00.013306",
                    "innerScopes": []
                }
            ]
        },
        {
            "scopeName": "SomeInnerScope3",
            "elapsed": "00:00:00.0240118",
            "innerScopes": []
        }
    ]
}