特集 Windows Server 2003完全ガイド
IIS 6.0のパフォーマンスを検証する

4.テスト2:シンプルなASP/ASP.NET

海津 智宏
2003/06/26

 上のテストでは、実際に運用されるサイトの処理に近いWebアプリケーションで比較を行ったが、これにはASP.NETの実行だけでなく、画像データの転送やデータベース・アクセスなど、複数の要素が含まれていた。そこで次のテストでは、ASP.NETの実行性能に注目するために、シンプルなASP.NETページを作成して、クライアントからアクセスしてみる。また、ほぼ同じページを従来のASPでも作成し、ASPとASP.NETの性能差も同時に調べることにした。

■テスト方法
 このテストでは、ASP/ASP.NETページの内部で簡単なスクリプトを作成し、Forループにより同じ文字を繰り返し出力して、全体では21Kbytes程度のデータを返すページを作成する。プログラミング言語としては、ASPではVBScriptを使用し、ASP.NETではVisualBasic .NETを使用する。

 このような場合、ASP.NETでは、コード・ビハインド(コードとビジュアル要素のそれぞれを異なるファイルに記述可能にする機能)の形式でプログラムを作成するのが一般的だが、今回はあえてASPに合わせて、HTMLページ内に直接プログラム・コードを記述している。なお参考までに、ASP.NETを利用し、ページ内に直接コードを記述する場合と、コード・ビハインドを使用した場合で簡単にテストしたところでは、両者に有意な差はなかった。

 テストに使用した環境(サーバおよびクライアント・コンピュータ各1台、100BASE-TXネットワーク接続)は前出のMSPetShopテストと同一である。

 またこのテストも、MSPetShop同様、Application Center Testを利用して、5分間繰り返しHTTPリクエストを送り、1秒あたりに処理した平均リクエスト数を算出する。ただし、MSPetShopテストでは、Application Center Testのセッション数を変化させて結果を確認したが、このテストではセッション数を10に固定した。これは、MSPetShopテストにおいて、IIS 5.0/IIS 6.0とも、10セッション程度でサーバのプロセッサ使用率が100%になったためだ。今回の構成では、このあたりがIISの限界性能になると考えた。

■テスト・ページのプログラム・コード
 ASPテスト用のページ、ASP.NETテスト用のページでは、それぞれ次のプログラムを使用した。

<html>
  <body>
  <%
    Dim i, j
    For j=1 To 256
      For i=1 To 80
        Response.Write "-"
      Next
      Response.Write "<br>"
    Next
  %>
  </body>
</html>
Default.asp(ASPテスト)
 
<%@ Page language="VB" %>
<html>
  <body>
  <%
    Dim i, j As Integer
    For j=1 To 256
      For i=1 To 80
        Response.Write("-")
      Next
      Response.Write("<br>")
    Next
  %>
  </body>
</html>
Default.aspx(ASP.NETテスト)

 ご覧いただけば分かるとおり、このプログラムでは、“-”(半角ハイフン)を1行に80文字表示し、それを256行表示しているだけである(前述したとおり、全体では21Kbytes程度のデータになる)。

■テスト結果
 テスト結果を以下に示す。横軸は1秒あたりに処理した平均リクエスト数である。従ってグラフが長いほど性能が高いことになる。

シンプルなASP/ASP.NETのテスト結果
ASP.NETテスト、ASPテストとも、IIS 6.0はIIS 5.0よりも10%程度性能が高い。またインタープリタ型で毎回実行されるASPに比べ、ASP.NETではコンパイル済みのコードが実行されるので、両者(ASPとASP.NET)で劇的な性能差が生じている。

 まずはASP.NETのテスト結果に注目してみよう(上側の棒グラフ)。結果はIIS 6.0(188リクエスト/s)がIIS 5.0(168リクエスト/s)よりも約12%程度高速ということになった。

 次にASPのテスト結果(下側の棒グラフ)に注目すると、IIS 6.0(60リクエスト/s)はIIS 5.0(54リクエスト/s)よりも約11%高速である。冒頭で述べたとおり、IIS 6.0ではASPテンプレート・キャッシュが強化されたが、今回は単純な1つのASPページだけを扱っているため、この差は現れていないようだ。

 ASP、ASP.NETとも、IIS 6.0とIIS 5.0の差はおよそ1.1倍であり、結果はMSPetShopテストでの性能差と一致する。これだけで断定はできないものの、これらの結果からは、ASPおよびASP.NETを利用したダイナミックなWebアプリケーション全体の性能を決定付けるのは、ASP/ASP.NETプログラムの実行速度であり、IIS 6.0ではそれがIIS 5.0に比べ10%程度改善されている、という仮説を導くことができる。

 ここで注目すべきは、ASP.NETとASPの性能差である。今回のテストで、ASP.NETはASPに比べ3倍以上高速という結果が得られた。ASPでは、基本的にページ・アクセスが発生するたびに、プログラム・コードがインタープリタによって解釈され(ASPテンプレート・キャッシュが機能すれば、インタープリタの再評価は省略可能)、実行されるのに対し、ASP.NETでは、最初にプログラム・コードが中間言語にコンパイルされ、以後のアクセスではこのコンパイル済みのコードが実行される。これだけ劇的な差が生じた理由はこれだろう。

 移行は簡単ではないが、ASPベースのWebアプリケーションを利用しており、処理性能に大きな不満があるなら、ASP.NETに移行することで、サーバにかかる負荷を大幅に軽減できる可能性があるだろう。


 INDEX
  [特集] Windows Server 2003完全ガイド
  IIS 6.0のパフォーマンスを検証する
    1.IIS 6.0の基礎知識
    2.IIS 5.0/IIS 6.0ベンチマーク・テスト
    3.テスト1:Microsoft .NET Pet Shop
  4.テスト2:シンプルなASP/ASP.NET
    5.テスト3:静的なWebページ表示
 
目次ページへ  Windows Server 2003完全ガイド


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間