JRubyにおけるInvokeDynamicの 利用パターンと性能評価 日本JRubyユーザ会 中村浩士(なひ) @nahi nahi@ruby-lang.org 資料: http://bit.ly/jjug-indy-jruby サンプル: http://bit.ly/jjug-indy-jruby-code
Charles Oliver Nutter Java, Ruby, and JVM guy trying to make sense of it all Greetings, readers! Over the past couple weeks I've had a few departures from typical JRuby development. I consider it a working vacation. I'm hoping to report on all of it soon, but for now we'll focus on one of the most exciting items: JSR-292, otherwise known as "InvokeDynamic". I've reported on invokedynamic previousl
JRubyでRubyを動かし、Proce55ingのライブラリを読み込むことが可能らしい Quietstar - Processing by Ruby #2 確かにProce55ingのコアAPIはAppletクラスを継承した普通のクラス(processing.core.PApplet)だし、JRuby上ではJavaのクラスを利用することもできるという話は聞いたことあったので、可能なのかも。でも実際にやってみると違うね、面白い。特にirb上から対話的にProce55ingを利用したコードを描いてみるとヤバイ! ・軽量でパワフルなRubyで ・対話的に (irb) ・Proce55ing ライブラリが自由に使える これだけでご飯三杯は食べれられる。もぐもぐ。 Proce55ingをデザインしたBen Fryは、Proce55ingで作成するコードを スケッチ と命名したけど、2D/3Dグラフ
RubyのArrayオブジェクトの同期性についてのお話。 タイトルそのままですが、JRubyではCRubyとは異なり、Arrayがスレッドセーフではありません。ここでいう「スレッド」とはRubyレベルのThreadのことです。(※ただしJRubyでは、RubyのThreadとJavaのThreadが1対1対応なので、JRubyにおいては、JavaレベルでのThreadを考えた場合でもスレッドセーフではありません) 実験。 10のスレッドが1000回ずつ、Arrayオブジェクトへの要素追加を行っています。p a.sizeは、10 * 1000で10000を表示してほしいところですが、ConcurrencyError例外になっています。 ConcurrencyError例外はJRuby固有の例外で、Javaでの実装上、Array用に内部で持っているJavaレベルの配列に対してArrayOutO
なぜか突然、JRubyConf 2010に行ってきたので、レポートでも。これは会場で配られていたTシャツとコーヒー豆、Ruby Brew。すごく香りのいい豆です。 昨年はサンフランシスコで開催されたJRubyConfですが、今年はオハイオのコロンバスというところでした。おそらく日本人には馴染みが無い場所かと(デトロイト近辺の日本人にはお馴染みの場所ではあります。ホンダの工場がコロンバス郊外にあるので。自動車業界つながりということで)。カンファレンス会場のQuest Confrence Centerはいかにもアメリカの郊外という雰囲気の場所にあります。(つまり、だだっぴろい感じのところ。いわゆる車が無いとどこにもいけないという典型的なアメリカの街) カンファレンスの会場は一部屋だけ。広さは、たぶんRubyKaigiの小さい方のホールの半分くらい、かな。でも、前の方はほとんど空きがないほど、大
(20090423 補足追加) How JRuby Makes Ruby Fast – Charles Oliver Nutter – Java, Ruby, and JVM guy trying to make sense of it allのベンチマークを実行してみた。解釈間違い等あれば、ご指摘ください。ベンチコードは参照元のまま、以下の通り。いろんな最適化レベルでパフォーマンスはかるには格好のものらしい。 def tak x, y, z if y >= x return z else return tak( tak(x-1, y, z), tak(y-1, z, x), tak(z-1, x, y)) end end require 'benchmark' N = (ARGV.shift || 1).to_i Benchmark.bm do |make| N.times do mak
原文: チャールズ=オリバー=ナター JVM上でJRubyが動く事の利点は折りに触れて述べてきました。JRubyのパフォーマンス数値はそこそこの結果を出しているのですが、多くの人々の期待に反して「抜群に素晴らしい」というものではありませんでした。詰まる所、他のRuby言語の実装に較べて良い結果を出したとしても、静的な型システムを用いる他のJVM言語には敵わないのでした。 しかし、それは今までの話し。 最近、JRubyの実行時に得られる情報に基づいた最適化をあれこれと試し始めました。ご存知の通り、JRubyは、Ruby言語の構造木をJVMのバイトコードにコンパイルするJITを搭載しています。その一方で、JITを使った他のシステムとは異なり、JRubyは最終的に良い結果をもたらすような情報をプログラムの作動時点で集めることはしなかったのです。今までにやっていた最適化と言えば、AOTコンパイラで
Charles Oliver Nutter Java, Ruby, and JVM guy trying to make sense of it all I mused today on Twitter that there's just a few small things that the JVM/JDK need to become a truly awesome platform for all sorts of development. Since so many people asked for more details, I'm posting a quick list here. There's obviously other things, but these are the ones on my mind today. Current JVMs start up pre
JRuby - Java powered Ruby implementation Java仮想マシンで動作するRuby「JRuby」はJavaがもっているさまざまな利点を利用できる興味深いプロダクトだが、Javaの欠点もそのまま引き継いでいる。もっとも顕著なのは起動時間が遅いことだ。これはLinuxなどでは特に気になる。一度起動が完了しJITが有効になったあとのJRubyは優れた速度を出すが、起動は遅い。小さいツールを作って利用するようなケースはJRubyは苦手ということになり、「起動が遅い」という悪名高い評判を得ることになる。 JRubyの主要開発者であるCharles Nutter氏がHeadius: JRuby Startup Time TipsにおいてJRubyの起動を高速化するための7つのテクニックを紹介している。いくつかはJRubyに特有のものだが、それ以外はJavaで動作する
インストール編(http://d.hatena.ne.jp/yokolet/20100529#1275156722)に書いたどれか(もしかするとさらに他のインストール方法もあるかも。。。NetBeansに付いてきたとか)で、JRubyをインストールできたら、次は当然、使っちゃうぞー!でしょう。では、さっそく。 その1 動く? 定番、Hello Worldの前にやっておくのは、ほんとーにJRubyが動いている?を確認すること、ですね。Hello Worldが動かなかったときに、なにがまずいかを特定するためにも必要。ので、最初はコレ。 jrubyコマンドへのパスは通してあるよね!、じゃ、 jruby -v jruby 1.5.0 (ruby 1.8.7 patchlevel 249) (2010-05-12 6769999) (Java HotSpot(TM) Client VM 1.5.0_
祝・JRuby 1.5.0リリース! さて、JRuby 1.5.0は様々な機能拡張が行われているが、その中に次の一文がある。 Ant support and Rake-Ant integration ほほう? JRake JRakeというキーワードが存在する。 JRakeってどうなんだろう? - idesaku blog Rakeが登場し、アーリーアドプター達から「もしかしてこいつは使えるツールなんじゃあ?」という認識が広まりだした頃、こう考える人が現れた。「JavaプログラムのビルドでRake使えたら幸せになれるんじゃね?」 Rakeを知る身からすれば、そう考えるのは自然なことだと思える。Rakeでは、MakeやApache Antに見られる宣言的な記述と、Rubyを直接利用した手続き型の記述を併用できるため、宣言的な書き方しかできない*1Antでは記述が難しい処理をたやすく記述できる。
前置き Google App Engine for JRuby(以下GAE/JRuby)*1で開発をするにあたって不便に感じるものの一つに、単体テストのし難さがありました。 開発サーバ(dev_appserver)って起動するまでに結構時間がかかるので*2、少し修正を加えるたびに開発サーバを立ち上げ直すのも地味にストレスが溜まるんですよね…。そもそもサーブレットの中で単体テストを書くという行為自体が非効率的だと言わざるを得ません。 そんなわけで、なんとか開発サーバに頼らずに単体テストを行う方法がないものかと思っていたら…。 普通にGAEの公式ドキュメント中に解説がありました。初めからちゃんと読んでおけって話ですね…。 ローカル サービスの実装でのユニットのテスト - Google App Engine - Google Code どうやらGAE/Jの提供する各サービスの肩代わりをしてくれる
2009年12月13日 Google App Engine/JRubyのローディング時間を短縮する precompilation_enabled google-appengineのAPIドキュメントの中にRails3.0preを動かす設定があったので読んでいたら、config.ru の中に :precompilation_enabled という設定項目が増えていることに気付いた。 AppEngine::Rack.configure_app( :application => 'application-id', :precompilation_enabled => true, :version => 1)検索してみると、SDK1.2.8で新設された設定項目らしい。 Official Blogにポストがあったので読んでみると、どうもJRubyアプリのローディング時間を短縮するために AppEng
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く