2012-10-24 8 views
5

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

この引数「1200」は、この操作を1200ミリ秒かかると予想され、それがより少ないものを取る場合は、データベースへの結果を保存していないことを意味し
using (mvcminiprofiler.Step("OperationName", 1200) 
{ 
    //some C# code 
} 

または1200msに等しい。しかし、それが1200ミリ秒以上かかる場合、この応答時間をデータベースに保存する。だから、私は基本的に操作ごとのしきい値について話している。

ミニプロファイラの周りにラッパーを書くつもりですが、ミニプロファイラのソースコードを変更するつもりはありません。実際には、私たちはすでにミニプロファイラーの周りに小さなフレームワークを構築していますが、ソースコードを変更したくありません。しかし、機能をいくつかの点で拡張するだけです。

+0

これは、IStorageに何らかの形でこの情報を流す必要があり、見た目をJarrodに尋ねるでしょう。 –

+0

お願いします:)私たちがプロファイルを作成したいサイトの中には影響を与えないのでリアルタイムにはいくらかの時間がかかります。したがって、グローバルしきい値とは別に、動作レベルのしきい値タイミングを持つことが理にかなっています。ありがとう! –

+0

'.Step()'のオーバーライドの代わりに、 '.StepIf(" Operation "、1200)'の代わりにどうでしょうか? –

答えて

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 
} 

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

さらに詳しい情報はthis GitHub Issueです。

関連する問題