先に
NProf を使って .NET アプリケーションをプロファイルする方法を投稿した。
さて、ASP.NET 2.0 Web アプリケーションのプロファイルを NProf を使って行うことはできるだろうか?
プロファイル対象のコードは大抵の場合はビジネスロジックである場合が多いであろうから、ちゃんと独立したアセンブリとして実装して、それを NUnit などのワークベンチ上で動作させ、これをプロファイルする、というのが本来の姿だろう。
しかしながら、諸般の事情で(ビジネスロジックを切り離している余裕がないとか)、どうしても Web アプリケーションまるごとプロファイルしたいケースがあるかもしれない(というか、私の場合は、そのような事態に遭遇した)。
ではどうするかというと、何のことはない、Visual Studio 2005(Web Developer Express含む) で開発するときに利用できる、開発用 Web サーバーをプロファイルすればよい。
具体的にはこうだ。
まず、開発用 Web サーバーは通常であれば下記のパスで存在する。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.exe
このパスを、NProf の Application 欄に指定する。
そして、コマンドライン引数だが、上記 WebDev.WebServer.exe をコマンドライン引数なしで実行すると、コマンドライン引数の説明がメッセージボックスで表示されるので、これを参考に NProf の Arguments 欄に設定すればよい(*1)。
あとは、NProf で [F5] で実行を開始。タスクトレイに開発用 Web サーバーのアイコンが表示されて起動したことがわかる。
この状態で、ブラウザから Web アプリケーションにアクセスし(*1)、ひととおり操作が終わったら、タスクトレイの開発用 Web サーバーのアイコンをクリックして「中止」を選んで終了させる。
プロファイル結果の収集にずいぶんとかかるようなので辛抱強く待てば、結果が表示される。
もちろん、IIS に設置した Web アプリや、開発用 Web サーバーが利用できない場合は、今回紹介の方法は使えないのでご容赦の程。
*1
例えば、次のように NProf の Arguments 欄に設定して実行した場合、
/port:1234 /path:"c:\foo" /vpath:"/bar"
ブラウザから、
http://localhost:1234/bar/default.aspx
にアクセスすることで、c:\foo フォルダに設置された ASP.NET Web アプリケーションの default.aspx ページを開始地点としてプロファイルができる。