Blog

Java Servlet,PHP,Apache moduleベンチマーク

By Hiroyuki OYAMA Mon Jun 2 03:29:26 2003

仕上げ中の原稿でつかう主なWebアプリケーション実装方法ごとのベンチマーク結果を纏めていた。大体予想通りなんだけど一部納得行かない部分が。

評価方法と対象

評価対象は次の8種類の環境で、現在時刻の文字列を
 
  • Mon Jun 02 03:00:18 JST 2003
  • の形式に整形する処理をforループで50回繰り返しながらHTMLを出力します。
    • CGI (C言語)
    • CGI (Perl)
    • Java Servlet (JRE 1.3.1, Tomcat 4.1.24生)
    • Java Servlet + mod_jk + Apache
    • PHP (4.3.2)
    • mod_perl (Apache::Registry)
    • Apache module
    これらをabコマンドで平行度10リクエスト数1000回で実行し、1秒間に処理したリクエスト数(多ければ高速)とスループット(多ければ高速)を記録した。

    名称処理件数[/sec]転送レート[Kbyte/sec]
    CGI (Perl)11.7324.48
    CGI (C)48.99102.86
    Java Servlet (Tomcat + mod_jk + Apache)84.64178.87
    Java Servlet (Tomcat単体)105.12219.38
    PHP103.97220.73
    mod_perl (Apache::Registry)110.67233.85
    Apache module313.48654.89

    Apache module APIのお話の原稿なので
    如何にApache moduleが優位か
    を強調する必要があったのは内緒です。とは言えズルすること無く普通に当たり前の結果が出てきました。
    構造的に似たグループであるJava ServletとPHPとmod_perlが横並びなのは予想通りではありますが、JavaのDateクラスのtoStringメソッドがナニゲにコストの高い処理であったのが興味深かったですね。単純なループとテキスト整形だけだとこの値より1.5倍ほど良い結果が得られます。Hello Worldでは得られない、ある意味現実的なベンチマークができたのでは無いかとか思ってみたり。ソースコードはそのうち適当な場所にのっけます。

    Mac OS XのPHP事情

    今まで全くPHPを使ったことが無かったので真面目に調べてみていたのですが僕の開発 & 日常作業環境であるMac OS XでのPHP事情というか、Mac OS Xでまともに使えるアクセラレータが無いのが不満でした。今回は使用しませんでしたがPEARなどのライブラリを読み込むと劇的に遅くなるので、真面目に使う場合はコンパイル結果のキャッシュは必須だと思うんですよね。一応Mac OS X向けにZend Optimizerの古いバージョンは提供されているのですが、php.info的に有効になっている状態でも結果に表れてこない。その他のオープンソース物はそもそもビルドできないという始末。まぁ私はベンチマーク取る以外ではPHPを使うことは無いので別にイイのですが。あ、いずれ会社で使うのかな。。。
    あとPHPのCGI版とやらの結果は別に必要だと思えなかったので無視。とりあえずせっかくビルドしたのを速攻でrmするのもナンなのでしばらく転がしておこうかな。

    Comments

    Post a comment

    Name:


    URL:


    Comments:


    WebエンジニアのためのApacheモジュールプログラミングガイド

    ApacheをHackする!
    モジュールプログラミング強烈初体験!!
    定価: 2,919円(税込)
    ISBN: 4-7741-1799-4

    hiroyuki_oyama IM status

    Apache Users

    Apache Modules

    CPAN


    Home > Blog > Java Servlet,PHP,Apache moduleベンチマーク