1

MiniProfiler を使用する場合、プロファイリングから無視したいコードの一部を含むメソッドがあります。

ドキュメントからわかるように、これを行う拡張メソッドは.Ignore()であり、usingステートメントで使用すると、その間プロファイリングを無効にする必要があります。

残念ながら、期待どおりの結果が得られません。このメソッド構造があるとします:

public async Task<IActionResult> FirstMethod()
{
    using (MiniProfiler.Current.Step("FirstMethod"))
    {
        IActionResult result = this.SecondMethod();
        
        using (MiniProfiler.Current.Ignore())
        {
            Thread.Sleep(100); 
        }

        return result;
    }
}

internal virtual IActionResult SecondMethod()
{
    using (MiniProfiler.Current.CustomTiming("SQL", "QuerySecondMethod"))
    {
        // Some data logic
    }
}

私が期待したのは、プロファイラーでは、ステップFirstMethodの継続時間とSecondMethodカスタムのタイミングがほぼ同じになるということです。FirstMethodSecondMethodThread.Sleep()

しかし、FirstMethod持続時間が よりも 100 ミリ秒長いことがわかり続けているため、 が内部のコードのプロファイラーを実際に無効にしていないSecondMethodように見えます。Ignore

私は何を間違っていますか?ドキュメントとIgnoreメソッドの目的を誤解していますか?

4

1 に答える 1