あまり専門知識はありませんので、比較的分かりやすく解説があると助かります。
単純な処理速度のみで言えばJavaが最速です。
その次がmod_perl。
Ruby on railsはmod_perlに比べて倍くらいは遅いと思います。
これは、サーバー1台でスペック的にCPU・メモリ・ディスクのI/O・ネットワークのボトルネックがほとんど発生しない場合においてです。ディスクI/Oやネットワークがボトルネックになるケースはどの方法でも大体同じです。
今時のサーバーでCPUの速度がボトルネックになるケースはあまりないです。
CPUの速度が問題にならない場合、1度に処理できるリクエストの数はメモリの使用量によります。
実際にサービスを開発するとき、ボトルネックが発生しないことはありません。1台のサーバーでさばききれなくなったときに、どういった方法で対処していくのかで使う技術を選択すればいいと思います。
サーバーのスペックが十分で1台だけならJavaが最適だと思いますが、ホスティングの標準的な専用サーバーのスペックでは十分であることはまれです。それを考慮するとmod_perlが良いと思います。
PHPが選択肢にあるなら、サーバー1台ではPHPを進めますが。
運用とか開発にかかるコストとかスケーラビリティとかスタッフのスキルも考慮するとケースバイケースになってしまうのが実状です。
どの技術に関しても専門的な知識を持っているエンジニアというのはめったにいないため、サーバーのスペックをあげたりサーバーを増やす等といったお金で解決するのが、結局は一番安くなるかと思います(w
一般に CGI で作られたアプリケーションは起動にコストがかかるので遅いといわれますが、mod_perl, Java/Servlet は CGI ではありませんし、Ruby on Rails も mod_ruby を使う限りでは同様の条件です。
以上の3社を比べる限りでは一概にどれが処理速度が速いとは言えないと思います。それぞれ一長一短です。
実際には言語自体の処理能力よりは中で行っている処理そのものの効率のやデータのアクセス方法の方が影響度が大きいので、言語自体の処理能力の差は無いといっても差し支えないと思います。
mod_rubyというのもあるのですね。知らなかったです。言語処理能力の差がなければ、開発速度が速い Ruby on Railsがよいのかもしれませんね。
計算中心なら Java が有利、そうでないなら (DB を使った Web アプリケーション等はこちら側だと思います) Perl が有利、という結果のようです。
また、Ruby は Perl 等に比べて遅いことで知られていますので、(ちょっと丁度良いソースが見つけられなくてすいません)
ケースによって
Perl > Java > Ruby または
Java > Perl > Ruby のどちらかになると考えられます。
参考になりました。DB関連がメインですので、perl の方が早いという事になりそうですね。実際、はてなも確か perl だったと思いますし、かなり優秀なのでしょう。
複数台ならば mod_perl の方がよいとおっしゃる意味が良く分かっていないのですが
元回答者の方は十分なスペックのサーバーで無い場合 mod_perl の方がよい、と回答されています。
Java はメモリ食いな側面もあるのでそういう回答になったのではと思います。
mod_perl も一度読み込んだスクリプトは基本的には開放しないので使い方を気をつけなければどっちもどっちという気はします。
言語処理能力の差がなければ、開発速度が速い Ruby on Railsがよいのかもしれませんね。
今のところ Ruby on Rails の開発速度は一概には速いとは言えず、開発者自身の資質によるところが大きいです。
優れた技術である事は疑いようも無いですが、今はまだ誰でも使えるようなものではないと思います。
僕の誤解も教えて頂きありがとうございます。なるほど、いろいろな意味で、どの言語がいいとは、いえないのですね。
Javaの場合、セッション等をレプリケーションしてクラスタリングした場合、その分も多少メモリを消費します。
同時アクセスユーザーが増えた場合、そのメモリの使用量も馬鹿にならないです。
メモリにデータを持たなければいいので、perlやrubyならデータベースに保存するといった事が簡単に実装できます。
Javaの場合はアプリケーションサーバーによって設定方法が違うと思いますが詳細は割愛します。
また、Javaのアプリケーションでセッションをレプリケーションすると、サーバー間でデータをやりとりするのに若干のボトルネックが発生します。ごくわずかですが、これをチューニングするのは(技術面や運用面で)非常に難しいです。
人件費に十分なコストをかけられるなら、チューニングによって得られるメリットは大いです。
Ruby on RailsはCGIやmod_rubyで動かすと結構遅いです。
lighttpd+FCGIやmongrelで動かすと単発のリクエストあたりの処理時間は非常に速いです。
長期的に見てサーバーを複数台にする時、アプリケーションを分割しやすいアーキテクチャを採用するとハードウェアのコストを節約できます。上手くやらないと運用が大変になりますが。
例えば、検索関係の処理や会員管理、管理機能を処理するサーバーを別々のサーバーで処理すると言った感じです。処理が重い処理の部分だけサーバーを増やしていけば対応できます。
そういう面ではperlやRailsの方が開発や運用を考えるとやりやすい気がします。
あと、使用するデータベースで言語を選ぶこともあります。
私はPostgreSQLならpgForestが使えるJava、perlやrubyならスケールアウトしやすいMySQLを選択することが多いです。
本当に、詳細な情報ありがとうございます。大変、助かります。
詳細な情報ありがとうございます!大変参考になりました。
長期的には、複数台で処理する事になると思うのですが、実は、複数台ならば mod_perl の方がよいとおっしゃる意味が良く分かっていないのですが、ご教授頂けますか?