RubyとJRubyの新機能で、Rubyでマルチスレッド化されたコードを実装しようとしていましたが、GILがコードを並列実行できないことを知りました。同じコードを実装し、JRubyでの実行時間はRubyよりはるかに優れていました。 JRubyのスレッディングはJavaのスレッディングと非常に似ていることを学んだので、Javaのコードでも同様のコードを実装しました.Javaでのパフォーマンス(実行時間)はJRubyよりも約10倍速くなっています。このため?ありがとうございます。RubyとJRubyとJavaのマルチスレッド化
0
A
答えて
0
JRubyがJavaでRubyを実装していると考えると、説明は非常に簡単です。つまり、.rbを使って実行するJavaコードが.classにコンパイルされた.classに比べて...
たとえメソッドのディスパッチがコストがかからなかったとしても、Rubyの動的な性質があります。あなたがJava上でa+1
を追加するとintに追加されますが、Rubyにはa+1
が追加されています。
あなたの質問はかなり一般的であり、最終的にどのようなパフォーマンス測定をしたのかもわかりませんJRubyを使って「現実の」仕事をするときの生産性を10倍にする価値があると思えば、「ネイティブ」Javaでその部分をやり直すことができます。
関連する問題
- 1. 同じWindows 7マシンのRubyとJRuby
- 2. マルチスレッド化とGDB
- 3. Javaマルチスレッドとオブジェクト
- 4. Javaのスレッドとマルチスレッド
- 5. jRuby/Ruby onデータベース関係とデータ検索
- 6. Microsoftロギングアプリケーションブロックとマルチスレッド化
- 7. Perl対Javaでのマルチスレッド化
- 8. Java Swingマルチスレッドとフリーズフリー
- 9. bundler jrubyとjson-jruby
- 10. スパークジョブサーバのマルチスレッド化とダイナミックアロケーション
- 11. Javaの:マルチスレッドと2Dのスレッド
- 12. Rake "which ruby` - > jruby
- 13. マルチスレッドとJava Swingの問題
- 14. マルチスレッドJavaとの並列和
- 15. Rubyマルチスレッド#joinと同時実行
- 16. Java - マルチスレッドとファイル質問
- 17. RubyコードからJRuby内部のJavaオブジェクトを取得する
- 18. RVM、JRubyの(埋め込みのJRuby 1.5.1と)特定のJava環境を設定
- 19. Javaマルチスレッド化されたベクトルの追加
- 20. JRuby on RailsとRuby on Railsの違いは何ですか?
- 21. 複数の変数のマルチスレッド化とマッピング
- 22. JrubyのJava配列
- 23. JRubyとジェネリック
- 24. Ruby:Rails:MRIとJRuby
- 25. WindowsのJRubyとCLASSPATH
- 26. Javaの入力ストリーム "ブロック"とマルチスレッド
- 27. Javaマルチスレッド - 同期ブロック内のリーダーとライタースレッド
- 28. JSCHとマルチスレッドJavaアプリケーションの問題
- 29. ruby-debugのjrubyバージョンでの問題
- 30. Java to JRuby to Resque
Rubyは、Javaなどの静的言語よりも通常実行が遅い動的言語です。パフォーマンスを向上させる動的言語用のさまざまなオプティマイザが存在します(つまり、多くの作業がブラウザのJavaScriptを高速化しています)。しかし、言語の根本的な原則のために、動的言語には本質的なパフォーマンスの欠点があります。パフォーマンスと静的なコンパイル時の安全性/開発の速度と臨時のハックビリティは、静的言語と動的言語の間の主な論点です。 – slipperyseal
あなたの提案に感謝@slipperyseal、マルチスレッドを実装している間、静的型と動的型付き言語のパフォーマンスの違いは何か特別な理由はありますか?私はスレッドの実行とそのような何かの違いを意味する? –
はそれ自身ではありません。あなたがロックやスピンロック(現代のJVMはやっていない - 現代のJVMの同期は非常に高速です)に多くの競合がない限り、そうではありません。あなたの問題は単純に次のようになります:JRubyで実行されるRubyコードは、同等の通常のJavaコードよりも単純に遅くなります。 – slipperyseal