0

ASP.NET MVC 4 で StackExchange Miniprofiler を使用しています。現在、割り当てられる値を生成する高価な式を使用して、クラスのメンバー変数への割り当てをプロファイリングしようとしています。Miniprofiler は割り当てステートメントをプロファイリングしたくないようです。エラーを強調するためにコードを単純化しました。

    public ActionResult TestProfiling()
    {
        var profiler = MiniProfiler.Current;
        using (profiler.Step("Test 1"))
            Thread.Sleep(50);
        int sue;
        using (profiler.Step("Test 2"))
        {
            sue = 1;
        }
        if (sue == 1)
            sue = 2;
        using (profiler.Step("Test 3"))
        {
            Thread.Sleep(50);
            int bob;
            using (profiler.Step("Inner Test"))
            {
                bob = 1;
            }
            if (bob == 1)
                bob = 2;
        }
        return View();
    }

注: if ステートメントは、単にコンパイラの警告を回避するためのものです。

テスト 1 とテスト 3 は、結果ページの Miniprofiler セクションに表示されます。テスト 2 と内部テストにはありません。ただし、テスト 2 または内部テストの内容をスリープ ステートメントに置き換えると、結果のページに出力されます。

ここで何が起こっているのですか?表示されないテストの1つ内の単純な割り当てステートメントを置き換えても、つまり

using (profiler.Step("Test 2"))
{
    ViewModel.ComplexData = MyAmazingService.LongRunningMethodToGenerateComplexData();
}

より複雑なものでは、テスト 2 ステップは、レンダリングされた Miniprofiler セクションにまだ出力を取得しません。Miniprofiler が割り当てステートメントをプロファイリングしないのはなぜですか?

編集: コード例がテキストに対応するようになりました。

Edit2 :さらに掘り下げた後、問題は割り当てステートメントにあるようには見えません。出力結果に何かが表示されるかどうかは、実行にかかる時間に依存しているようです。すなわち

using (profiler.Step("Test 2"))
{
    sue = 1;
    Thread.Sleep(0);
}

上記のコードを使用すると、テスト 2 は Miniprofiler の結果に表示されません。

using (profiler.Step("Test 2"))
{
    sue = 1;
    Thread.Sleep(10);
}

上記のコードを使用すると、テスト 2 が Miniprofiler の結果に表示されます。

したがって、私の LongRunningCodeToGenerateComplexData は非常に高速であることが判明したようです...しかし、Miniprofiler の予想される動作は、非常に短い時間しかかからないステップを表示しないのでしょうか?

4

2 に答える 2

2

プロファイラーの結果の右下にある [show trivial] をクリックするだけです。

これにより、すべてのアクションが少なく表示されるはずです

于 2013-12-17T09:05:37.297 に答える
0

Miniprofiler が実行時間が 3ms 未満のステップの結果を表示しないことが問題だったようです。

編集:Miniprofilerのドキュメントから。

TrivialDurationThresholdMilliseconds 期間がこれ以下のタイミング ステップは、デフォルトで UI に表示されません。デフォルトは 2.0 ミリ秒です。

http://community.miniprofiler.com/permalinks/20/various-miniprofiler-settings

于 2013-08-15T08:42:51.227 に答える