2011-09-11 8 views
19

C#コンソールアプリケーションでmvc-mini-profilerを使用するにはどうすればよいですか?コンソールアプリケーションでmvc miniプロファイラを使用できますか?

また、興味深いことに、mvc miniプロファイラは実際のプロファイリングされた統計情報を各Webページの左側に置くか、手動で行われるカスタムJavaScriptコードですか?

mvcサンプルをダウンロードして実行しましたが、そのコードをJavaScriptのポップアップに挿入するコードを見つけることができません。

答えて

11

コアタイミングオブジェクト(MiniProfiler)は、profiled-connectionフックなどと同様に正常に動作するはずです。しかし、あなたはする必要があります。

  • 結果
  • は(ウェブのためにそれは簡単です - ちょうどのhttpリクエストを)あなた自身のスコープ/有効期間を定める表示するために、独自のUIを追加する拡張APIがある(独自のストレージ・フックを提供
  • このため、それはデフォルトのIIRCによるHTTP-コンテキストを使用しています)
  • 私はいくつかの人々がそれの部分を使用している知っている手動の周りプロファイラを渡す、または現在のプロファイラのインスタンス

を検索する賢明な方法を定義するのいずれかWPFなど、使用することができますが、IMOでは理にかなったビットだけを選択し、それらを使用して素晴らしいライブラリを追加するカスタムライブラリを作成することができます。

+1

@マーク...あなたは生産にこのランニングのいずれかのスクリーンショットを持っています? MiniProfilerの最新ビルドでそれを維持していますか? –

+0

@RichardB私の主な焦点はウェブ上です。私はコンソールに具体的なシナリオ例はありません。 –

20

はい、できます。また、NuGetパッケージを作成して、実行しやすくしました。

チェックアウトMiniProfiler.Windows:プロファイリングのための良好なコンソールアプリケーションを設計する方法についての詳細な記事のためにも http://nootn.github.com/MiniProfiler.Windows/

:(現在はプレリリース) http://healthedev.blogspot.com.au/2012/07/performance-profiling-console-or-winwpf.html

+2

ねえ、あなたのナゲットパッケージは素晴らしい作品です。 1つの小さなこと:MiniProfilerの以前のバージョンに依存するように見えるので、アセンブリリダイレクトを使用する必要がありました。 nuspecを最新バージョンに依存して更新することを検討してください。とにかく努力をありがとう:) –

+2

リリース3.1.1.140と互換性がないようです。それを修正する計画はありますか? – Darek

+2

@PaulSuartアセンブリ 'MiniProfiler.Windows、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null'から 'MiniProfiler.Windows.ConsoleProfilingProvider'型のフォローインラインエラー 'メソッド '開始'に直面しています。 "MiniProfiler.Windows、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null"というアセンブリからのタイプ 'MiniProfiler.Windows.ConsoleProfilingProvider'の例外のメッセージ= "Method 'Start' .' nuspecを更新するには?ソリューションフォルダに.nuspecファイルはありません。 MiniProfilerのバージョンは3.1.1.140です –

0

MiniProfiler V4は、メソッドRenderPlainText()を持っています。あなたは、任意の追加設定なしでコンソールまたはマルチスレッドの非同期サーバアプリケーションで直接使用することができます。

public void Foo() 
{ 
    MiniProfiler.Start("Interesting subroutine"); 
    using (MiniProfiler.Current.Step("Step1")) 
    { 
     using (MiniProfiler.Current.Step(nameof(AccessDb))) 
     { 
      AccessDb(); 
     } 
     Thread.Sleep(100); 
    } 
    using (MiniProfiler.Current.Step("Step2")) 
    { 
     Thread.Sleep(100); 
    } 
    MiniProfiler.Stop(); 
    Console.WriteLine(MiniProfiler.Current.RenderPlainText()); 
} 

このコードスニペット出力以下の生成:

PCName 2017年8月2日8時44分36秒AMに
   注目サブルーチン= 309.2ms
>ステップ1 = 204.8ms
> > AccessDb = 103.8ms(2 CMDSでSQL = 56.2ms)
>ステップ2 =あなたは出力がカスタムタイミング(この場合はSQL)の短い要約が含まれて見ることができるように

を100.9ms。 RenderPlainText()という独自のバージョンを提供することで、この動作を簡単に変更できます(たとえば、コマンドテキストを含めるなど)。

詳しくチェックの場合:

関連する問題