[解決済み] なぜRubyは遅いと言われるのか?[クローズド]
質問
私はRuby on Railsが好きで、すべてのWeb開発プロジェクトに使っています。 数年前、Railsはメモリを大量に消費するとか、あまり拡張性がないとか、いろいろ言われていましたが、Gregg Pollackによって、これらの指摘は一掃されました。 こちら .
最近、Ruby自体が遅いという話も聞きますが。
- なぜRubyは遅いと言われるのか?
Rubyが遅いとは感じていませんが、簡単なCRUDアプリや会社のブログを作るのに使っているだけです。 どんなプロジェクトに参加したら、Rubyが遅いと感じるようになるのでしょうか? それとも、この遅さは、すべてのプログラミング言語に影響するものなのでしょうか?
-
この "slowness"に対処する場合、Ruby プログラマとしてどのような選択肢があるのでしょうか?
-
Stack Overflowのようなスピードが重要でトラフィックが激しいアプリケーションには、どのバージョンのRubyが最も適していますか?
この質問は主観的なもので、アーキテクチャのセットアップ(EC2とスタンドアロンサーバーなど)が大きな違いを生むことは承知していますが、Rubyが遅いということについて人々がどう考えているかを聞きたいと思います。
最後に、Ruby 2.0に関するニュースがあまり見当たりませんが、数年先ということでしょうか?
解決するには?
<ブロッククオートなぜRubyは遅いと言われるのか?
なぜなら、Rubyと他の言語の典型的なベンチマークを実行すると、Rubyが負けるからです。
<ブロッククオート私はRubyが遅いとは思いませんが を作るのに使っているだけです。 簡単なCRUDアプリや会社のブログなど。 どのようなプロジェクトが必要なのでしょうか? をする前に、Rubyが 遅いですか?それとも、この遅さは すべてのプログラミングに影響するもので 言語ですか?
リアルタイムのデジタル信号処理アプリケーションや、リアルタイムの制御システムを書くには、おそらくRubyはあまり役に立たないでしょう。スマートフォンのようなリソースに制約のあるコンピュータでは、(今日のVMを使った)Rubyはおそらく息が詰まるでしょう。
例えば、Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, 多くの解析ライブラリ, RMagick, TCP/IP などは Ruby で使われる C プログラムです。Rubyが糊付けとビジネスロジックを提供するのです。
<ブロッククオートRubyとしての選択肢は? プログラマーは この "slowness"は何ですか?
より高速な言語に変更する。しかし、それにはコストがかかる。そのコストに見合うだけの価値があるかもしれません。しかし、ほとんどのWebアプリケーションでは、言語の選択は重要な要素ではありません。なぜなら、開発コストが高い高速な言語を使うことを正当化できるほどのトラフィックがないからです。
<ブロッククオートどのバージョンのRubyが最も適しているか スタックオーバーフローのようなアプリケーション 速度が重要で、トラフィックが多い場合 激しいですか?
JRuby、IronRuby、REEは、VMに余裕があるプラットフォームでは、アプリケーションのRuby部分をより速く走らせることができます。そして、多くの場合、遅さの原因はRubyではなく、コンピュータシステムのアーキテクチャとアプリケーションのアーキテクチャなので、データベースのレプリケーション、複数のアプリケーションサーバ、リバースプロキシによるロードバランス、HTTPキャッシュ、memcache、Ajax、クライアントサイドキャッシュなどのようなことを行うことができます。どれもRubyではありません。
最後に、このような Ruby 2.0は、まだ数年先ということですね。 何年も先の話?
ほとんどの人がRuby 1.9.1を待っています。私自身は、Ruby 1.9.1 on JRubyでのRails 3.1を待っているところです。
最後に、多くの開発者がRubyを選ぶ理由は、他の言語に比べてプログラミングが楽しくなること、そしてRuby with Railsによって熟練したWeb開発者が非常に速くアプリケーションを開発できるようになるためであることを、ぜひ覚えておいてください。
関連
-
[解決済み】RVMをアンインストールする方法は?[重複] RVMのアンインストール方法
-
[解決済み] Ruby プログラムに一定時間待つように指示する
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ruby:kind_of? vs. instance_of? vs. is_a?
-
[解決済み] Aptana Studio 3.6をWindowsにインストールできない
-
[解決済み] -bashです。/Users/myname/.bash_profile: パーミッションが拒否されました
-
[解決済み] Ruby 'require' エラー: そのようなファイルをロードできない
-
[解決済み] Rubyのフィボナッチ数列(再帰)
-
[解決済み] ファイルの存在を確認する方法 [重複]について
-
[解決済み] ネストされたクラスとモジュールにネストされたクラスはいつ使用するのですか?
-
[解決済み] Rubyで2次元配列の作成と反復処理
-
[解決済み] Rubyにバイナリ検索は組み込まれていますか?
-
[解決済み】rubyには本当のマルチスレッドがあるのか?