SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【RubyKaigi'08】詳細レポート

【RubyKaigi'08】詳細レポート : 多様化するRuby

日本Ruby会議2008 詳細レポート 前編


  • このエントリーをはてなブックマークに追加

Ruby 1.9の次

 ささだ氏は、これらの研究として以下のような例を挙げた。

MVM

 MVMの適用対象は携帯電話のような小さな世界から、マイクロソフト研究所のSingularityのような仮想OSまで応用の範囲が広い。特にSingularityのような、軽量かつ安全な仮想OSとしてのRubyというものが考えられる

世界でたったひとつだけのRuby(アトミックRuby)。

 Embeded XPなどのように必要なモジュールだけで組み立て可能としたRuby。組み込みデバイスなどがターゲットとして考えられる。

パーサー不要Ruby(バイトコードシリアライゼーション)

 アトミックRubyを構成する要素技術として、バイトコードシリアライゼーションを挙げることができる。たとえば家電製品のマイコン制御用ROMへの組み込みではソースコードを動的に解析する必要がないので、シリアライズしたバイトコードを組み込むことでパーサーを不要化できる。

BC(バイトコード)toCトランスレータ

 バイトコードからCのソースを生成することで、既存Cコンパイラの最適化を活用したり、特殊なCPU用のVM実装を不要化したりする。BCtoCトランスレータには、たとえばレガシーな組み込み機器のソフト開発といった分野への適用が考えられる

HPC用最適化

 64ビットマシンでは、即値に62~63ビット利用可能なことを利用して、浮動小数点数を即値として扱うようにしたRuby。現在の浮動小数点数をヒープに確保する方法と比較してフェッチ回数が半減し、かつGCを減らすことによって高速化できる。この処理系は研究段階では実装できていて、標準のRubyに対して1.9倍高速に動作する。

 なお実装では即値を示すビットの持ち方を工夫することで、64ビットをフルに利用できるようにしている(具体的な方法については論文を参照とのこと――筆者には見当がつかなかったがエクスポーネントを利用するらしい)。

 このような実装はHPCに最適化された処理系と比較すると遥かに低速であるが、人間がフルHPC対応の処理系で3日かけてプログラミングした後に実行時間1時間で結果を得る代わりに、人間がRubyを使って1日でプログラミングして実行時間1日で結果を得れば、むしろ1日の得になるという点に着目している。

バイトコードシリアライゼーションを利用した移動コード

 数1000ノードに対する分散環境に対して、動的なコードとデータの分配を行うのにバイトコードシリアライゼーションを利用する。

メモリーアロケータやGCの見直し

 YARV採用によって、GCのコストやメモリーアロケーションのコストが比較して増加したため、リアルタイムGCや、コンパクションといった技術の適用が有効だと考えられる。

効果的な脱最適化

 クラスの再ロードやメソッドの再定義に対応して、JITコンパイル済みコードを戻し、コンテキスト情報を復元する技術。脱最適化そのものはLispやSmalltalkに実装されている古い技術(もちろんJavaにもある)であるが、それをRubyという実用言語(広い範囲で利用されていてユーザーベースが大きいという意味)で効果的に実装することで、高速化を助けることを狙う。

 なお、ささだ氏は関連して、東京大学大学院に、ここで述べたようなRubyを利用した研究やOS、プロセッサアーキテクチャの実装を研究する笹田研究室が発足したこと、一緒に研究する学生を募集していること(願書出願は7/1~7/7まで)を告知した。

次のページ
実務指向のJRuby

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【RubyKaigi'08】詳細レポート連載記事一覧
この記事の著者

arton(アートン)

専門は業界特化型のミドルウェアやフレームワークとそれを利用するアプリケーションの開発。需要に応じてメインフレームクラスから携帯端末までダウンサイジングしたりアップサイジングしたりしながらオブジェクトを連携させていくという変化に富んだ開発者人生を歩んでいる。著書に『Ruby③ オブジェクト指向とはじめての設計...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2724 2008/09/05 11:31

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング