« 七つの威力 | Main | LOOX U/C30 Ubuntu で拡張現実AR »

February 22, 2009

紅玉

E141紅玉と言ってもリンゴじゃなくて、宝石のルビーのほう。まあ、更に、それから名前を取ったプログラム言語の事だけどね。
前回のコンテンツは、Ubuntu 8.04 標準の Ruby 1.8.6 を使ってプログラムの性能を測ったのだが、1月末に Ruby の新バージョン 1.9.1 がリリースされていたので、試してみた。以下、全て Ubuntu 8.04 での作業記録だが、Ubuntu 8.10 でも同様に使えるだろう。

まずは、インスト。
Ruby 1.9.1 インストの前に、Synaptic で build-essential をインストールしておく。
オブジェクト指向スクリプト言語 Rubyから、ruby-1.9.1-p0.tar.bz2 をダウンロード

$ cd /tmp
$ tar jxvf ruby-1.9.1-p0.tar.bz2
$ cd ruby-1.9.1-p0/
$ ./configure
$ make
$ sudo make install
$ sudo mv /usr/local/bin/ruby /usr/local/bin/ruby1.9
$ sudo ln -s /usr/bin/ruby /usr/local/bin/ruby

最後の二行は、Ruby 1.8.6 と同居するためのオマジナイ。これで、コマンドラインから「$ ruby」とすると Ruby 1.8.6 で、「$ ruby1.9」とすると Ruby 1.9.1 になる。Ruby 1.9.1 は、未だ ruby-kde4 とか ruby-gnome2 とかに対応していないからね。

前回と同じくデュアルコア対応プログラミングの testDualCore03.rb を使って、パフォーマンスを測定した。ただ、そのままだと Ruby 1.9.1 では正常動作しないので、少し書き換えた:testDualCore05.rb
・Atom Z520 Ubuntu 8.04 ruby 1.8.6
 ・シングルコア用プログラム 159.1秒 デュアルコア用プログラム 122.4秒
・Athlon64 X2 4200+ (2.2GHz) Ubuntu 8.04 ruby 1.8.6
 ・シングルコア用プログラム 55.2秒 デュアルコア用プログラム 28.2秒
・Atom Z520 Ubuntu 8.04 ruby 1.9.1
 ・シングルコア用プログラム 61.0秒 デュアルコア用プログラム 45.9秒
・Athlon64 X2 4200+ (2.2GHz) Ubuntu 8.04 ruby 1.9.1
 ・シングルコア用プログラム 22.3秒 デュアルコア用プログラム 11.9秒

Ruby 1.9.1 は吃驚するほど速い!
ただ、デュアルコア対応プログラミングの testDualCore01.rb は、またも全く効果がなかった。デュアルコア対応プログラミングにも書いたけど、ruby の 1.8.x では、ネイティブ・スレッドに対応していなかったのが、Ruby 1.9.1 なら対応してパフォーマンスが向上すると期待したんだけどねえ。

まあ、速いから良いか。

|

« 七つの威力 | Main | LOOX U/C30 Ubuntu で拡張現実AR »

Comments

いつも楽しく拝見させていただいております。
もうご存じかと思いますが、Ruby 1.9 のネイティブスレッド対応はマルチコアに対応していないそうです。たぶん移植性などなどの問題なのでしょうね。

Ruby 開発メンバー内では Multi VM (1.9 は VM ベースになったことを利用し、VM を複数プロセスとして起こすことでマルチコアを利用する) というアイディアもあるようですが、まだアイディアレベルだと聞きました。去年の10月の時点の話なので、現状はまた違うかもしれません。

Posted by: naruoga | February 23, 2009 at 01:57 PM

ルビーならカボションカットが有名だと思います。

Posted by: enzi | February 23, 2009 at 02:22 PM

naruoga さん、
情報、どうも有難うございます。
ATOM 等の CPU の場合、元々プアーな CPU を Hyper-Threading を使って何とかパフォーマンスを上げているようです。Ruby もできれば、マルチコアや Hyper-Threading に対応したネイティブスレッドを採用するとかしてほしいです。VMをマルチで使うなど興味があります。
究極としては、プログラミング時に意識しなくても、インタプリタが適当にマルチコアや Hyper-Threading に割り当てて並行処理してくれると良いのですが。

enzi さん、どうも。
「カボションカット」をグーグルで画像検索して納得しました。確かに、あの丸っこいカットは見覚えがあります。
有難うございました。

Posted by: 野田篤司 | February 23, 2009 at 08:54 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/94422/44145848

Listed below are links to weblogs that reference 紅玉:

« 七つの威力 | Main | LOOX U/C30 Ubuntu で拡張現実AR »