井上

2005・10・11

パフォーマンスと言えばgoogle

Javaとperlのパフォーマンスがどうだ、なんて話は、人間が小さい気がしてきました。やはりパフォーマンスを語るならgoogleを避けて通るわけには行きません。

Google Research Publications
http://labs.google.com/papers/

Rob Pikeの名前があります。slashdot経由でGoogleに入社したと聞いた記憶がありますが、こうやって名前を見ると感慨深いものがあります。

# ちなみに、まだどれも読んでいません。
2005 10 11 04:28 - inoue - トラックバック(DISALLOWED (TrackBack))

パフォーマンス、信じられるのは自分だけ

「サーバーサイドの大規模な開発にはJava」、と言われ始めてからだいぶ経っています。一方、インターネットで本当にトラフィックをさばくサイトのサーバがServlet化している様子は見られません(netcraftを信用すればですが)。いくつかのオンラインバンク系のサイトで、.jspのついたURLを見ることがあるので、コボラーには人気なのかもしれませんが(凄い偏見)。

本当のところ、Servletとmod_perlでどのぐらいのパフォーマンス差があるのでしょう。

mod_perl側で面白い情報が、ドリームアーツ竹迫さんの「mod_perl における C10K Problem」です。
c10kは、同時クライアント数1万の課題にどうするかという話です。
実際には同時接続数100のオーダーでもかなり厳しい話です(極論ですが、1セッションがCPUを0.1秒占有するだけで、最大10秒の遅延を生みます)。竹迫さんのプレゼンは、mod_perl以外のところで、いかにがんばるかに焦点が当たっています。

直接的に、Servletとmod_perlのベンチマーク比較をしたのが、次のふたつです。
http://module.jp/blog/cgi_php_servlet_modeprl_benchmark.html
http://www.caucho.com/articles/benchmark.xtp

前者は小山さんが行ったベンチマークです。Tomcatに比べてmod_perlの方が少し良い数値ですが、まあ、誤差の範囲でしょう。

後者はResin(servletサーバ)が、自分たちはmod_perlより速いと主張しているページです。そうは言っても、圧倒的な差をつけているわけではありません。せいぜい数10%速いといったところです。ここではResinがTomcatより3倍速いと言っています。Resinのサイトにそんな記述は見つからないので、信用できるかは不明です。もし本当なら、Tomcatはmod_perlよりだいぶ遅いことになってしまいます。
3倍の数値はともかく、Resinが速度を売りにしているのは事実です。XSLTも速いと主張しています。もっとも、あの信じられないほど遅いXalanと比較している時点で終わっている気がします。自信があるなら、libxsltと比較してもらいたいものです。
Performance FAQによると、Resinのネットワーク周りはネイティブコードでチューニングしているようです。この辺は、SunやIBMには(政治的に)できない部分です。

さて我らが(?)Tomcatはどうなのでしょう。Tomcat FAQのパフォーマンスの項から、Servlet Performance Reportを見ました。細かい数値はともかくWebSphereのひとり負けが目立ちます。IBMなので、安いマシンで速く動くようなバカなソフトは作りません。TomcatとResinは、あまり差を感じません。これを見てTomcat意外にやるじゃんと思うか、Resinは口だけソフトと見るか、速いソフトなんて信用できないのでやっぱりWebSphereが一番ですよ、と思うか、それぞれの自由です。
2005 10 11 02:36 - inoue - トラックバック(DISALLOWED (TrackBack))

アンチStruts(のトランジションドリブン)

Javaファンの井上です。

1年以上前にStrutsネタを書いて、「次回に続く」と終わらせています。
http://dev.ariel-networks.com/blog/inoue.php?blogid=2&archive=2004-8-17

Strutsに違和感をずっと感じていましたが、共感できる文書を見つけました。

Strutsの志向を「トランジションドリブン」と呼んで批判しています。対案として「ページドリブン」なアーキテクチャを提唱しています。直感的に、悪くないと感じます。
ただ「ページドリブン」という用語はあまり好きではありません。「ページ」と呼ぶと、ユーザ側(ブラウザ)の一画面を想起させます。ユーザ側での画面にとらわれる必要は感じていません。ブラウザにHTMLを返すのも、JavaScriptのXMLHttpRequestに応えるのも(いわゆる、須崎さんJesse James Garrettが提唱したAJAX)、RSSリーダーにRSSを返すのも、Webアプリ側が区別する必要は無いはずです。

Strutsの「トランジションドリブン」がいつも悪いわけではありません。「次へ」「次へ」と進むようなページ遷移、普通のWindowsアプリで言うところのWizard的なUIには向いています。過去のWebアプリには、こういうWizard的UIが多かったのですが、今後、相対的に減っていく気がしています。と言うわけで、Strutsの意思を継いでいるJSFにも違和感を感じています(気が変わる可能性もあります)。
2005 10 11 02:28 - inoue - トラックバック(DISALLOWED (TrackBack))