5

これは私が直面しているシナリオです: MiniProfiler を使用していくつかの操作をプロファイリングしています。しかし、私が使用しなければならない特定の機能が欠けています。プロファイリングで何を考慮し、何を考慮しないか、何を遅いと見なし、何をそうでないかなど、いくつかの構成を行うことができる設定ファイル MiniProfiler があります。しかし、これらはグローバル設定であり、プロファイリングされるすべての操作に適用されます。私が必要としているのは、次のようなことを言えるようになることです。

using (mvcminiprofiler.Step("OperationName", 1200)
{
    //some C# code 
}

この引数 '1200' は、この操作に 1200 ミリ秒かかることが予想され、1200 ミリ秒以下の場合は結果をデータベースに保存しないことを示します。ただし、1200 ミリ秒以上かかる場合は、この応答時間をデータベースに保存してください。つまり、基本的に操作ごとのしきい値について話しているのです。

このための MiniProfiler のラッパーを作成したいと考えていますが、Mini Profiler のソース コードを変更するつもりはありません。実際、ミニ プロファイラーの周りに小さなフレームワークを既に構築していますが、そのソース コードを変更したくありません。ただし、いくつかの方法で機能を拡張するだけです。

4

1 に答える 1

2

nuget 3.0.10-beta5 以降で利用可能な、次の新しい拡張メソッドを MiniProfiler に追加しました。

  1. MiniProfiler.StepIf(string name decimal minSaveMs, bool includeChildren = false)
  2. MiniProfiler.CustomTimingIf(string category, string commandString, deciml minSaveMs, string executeType = null)

これらを使用して、やりたいことを正確に実行できるはずです。あなたの場合、次のようなコードを使用します。

using (MiniProfiler.Current.StepIf("Operation Name", 1200)) {
  // do your stuff
}

(デフォルトは false) を使用includeChildrenして、これを保存するかどうかを決定するときに、子プロファイルに記録された時間を使用するかどうかを設定できますCustomTiming

詳細については、この GitHub の問題を参照してください。

于 2014-02-16T09:34:50.430 に答える