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
カスタムのタイミングがほぼ同じになるということです。FirstMethod
SecondMethod
Thread.Sleep()
しかし、FirstMethod
持続時間が よりも 100 ミリ秒長いことがわかり続けているため、 が内部のコードのプロファイラーを実際に無効にしていないSecondMethod
ように見えます。Ignore
私は何を間違っていますか?ドキュメントとIgnore
メソッドの目的を誤解していますか?