重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Rubyは実行するのが遅いと聞いたことがあるんですが。

実行ってどの場面のことなんでしょうか?

サイトを開いたときのことなんでしょうか?


なんかバカっぽい質問ですみません。

A 回答 (5件)

少なくとも、現時点では、スクリプト言語の中で比較しても


Ruby は遅いほうだといわれることが多いですね。
perl,python等は、まず中間言語にコンパイルして、それを実行するという形をとっていますが、Rubyはほんとにインタプリタとして実行されてます。
Rubyにももうすぐこの仕組み(中間言語)が取り入れられることにはなっています。
もっとも、遅い原因は、Rubyは言語仕様としてコンテキストによって振る舞いがかわることが多いので、実行時にする必要があることが多いってのが大きいみたいですが。

ちなみに、普通、cgiなどとしてrubyを本格的に使う場合は、別プロセスとして、rubyを起動しっぱなしにしておく仕組みをとることがほとんどなので、起動時間は必要ありません。
    • good
    • 0

異なる言語の速度比較の場合、他の言語では0.1秒で


実行される事に0.5秒かかるといった様に、体感速度
として感じる事のできない様な場合でも「遅い」と
される事が有ります。
結果が出るまでに1~2時間かかるのであれば実運用
には耐えられませんし、大量のアクセスが集中する
事が多く処理内容も複雑な場合には、コンマ数秒の
差が多きくなる事もあり得ますが、実運用に支障が
ない程度の速度差であれば特に気にする必要はないと
思います。
#処理速度に影響を与えるのは言語だけとは限りま
#せん。
    • good
    • 0
この回答へのお礼

なるほど、なんとなくわかったような・・・。

ありがとうございます。

お礼日時:2007/06/24 18:30

そういった話で出てくるときはたいてい、


同じ仕事をするプログラム(スクリプト)をそれぞれの言語で作って比較したときに
Rubyは速度面でほかの言語に劣ることが多い。ということです。
C/C++とかJavaは言うに及ばず、同じスクリプティング言語の
PerlやPythonなんかにも遅れをとることが多いです。

Create your own Ranking | Gentoo : Intel® Pentium® 4 Computer Language Benchmarks Game
http://shootout.alioth.debian.org/gp4/benchmark. …

が、一応Rubyも高速化のための努力は続けられていますので
近い将来には状況は変わるかもしれません。
    • good
    • 0

実行とは、処理が走る部分です。

例えば、 Apache + CGI(Ruby) の環境でしたら、URLを開いた場合に以下の順序で処理されます。

1. クライアントPCから、WEBサーバのApacheにHTTP接続
2. Apacheがクライアントに返すべきファイルを探す
3. URLがCGI(Ruby)を示していた場合、Rubyを起動してRubyスクリプトを実行させる
4. 3. 出力された結果を、クライアントPCに返す

遅いのは3の部分ですね。



なお、Rubyの実装に関しては、パフォーマンスより生産性や可読性を重視する主義だと聞いたことがあります。理由は、パフォーマンスはハードをいいのを買えばなんとでもなるからです。なので、Javaやその他のLLよりも遅い可能性はあります。実際はどうか知りませんが。
    • good
    • 0
この回答へのお礼

部分分けされていて、とてもわかりやすかったです。

なるほど起動と実行の部分が遅いということですか


ありがとうございます。

お礼日時:2007/06/24 18:35

Rubyは処理系がインタプリタとして作られています。

ですので、CやC++などのようなCPUが直接実行可能なコードに変換されていません。それらの言語と比較したとき、実行速度が遅いということですね。

>>サイトを開いたときのことなんでしょうか?

C++と比べてRubyのほうが遅いでしょうが、ネットワークやディスクアクセスなど、その他もろもろ、桁違いに遅い部分がサイトが表示されるまでにあるので、私たちが使う範囲では、その差を体感できないと思いますよ。

ちなみにJavaも同系列の言語といえますので、「Rubyが遅い」といわれる方にとっては「Javaも遅い」という結論になりますね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!