SSブログ

RubyのRipとか、MacのGCDとか [MacOSX]

RubyGemsっていまいち使いにくかったので、色々制約が解けるといいなぁ。
 http://journal.mycom.co.jp/news/2009/06/16/041/index.html
普通のソースを使うのとの齟齬が生じなければなお良し。

Ruby Enterprize Editionってのもあるのね。どういうところがどういう趣向で出しているんだろう。
 http://journal.mycom.co.jp/news/2009/06/11/063/index.html



正直言って、MacOSXのGCDってよく分からない。というかいろんなところで読んだりしたんだけれど、WWDCという名前にしてはDeveloper寄りの報道者がきていないところが問題だと思われ。
 http://ascii.jp/elem/000/000/427/427683/
言ってる事は分かるんだけれども、なんかすっきりしないんだよな。

マルチスレッド対応フレームワークはCocoaで実現化している。それは聞いている。それが上手くいっているかどうかは、Carbonをたくさん扱っているわけではないし、システムに近いプログラミングもしてないので分からないのが本音だが。

孫引きになってしまうが、
プログラムの90%が並列化可能になっても、わずか10%が並列化できていないだけで、100%並列実行可能なプログラムに比べて、コアを増やしたときの性能向上は半分に落ちてしまう(アムダールの法則という。Wikipedia)。

という事らしい。かなりシビアな世界ですね。Javaが他のCGIなどの実行よりも効率的だとされていたのは、スレッドで動いているって聞かされていた。Javaの上でやっている限りは、そういう事を考えなくても良かったのが広まった理由なのかもしれない。今ではmod_perlとかmod_rubyとかでスレッドで動いていて、今となってはそれ自体に意味はあんまりないけれども、マルチコア化とともにもっと重要度が増しているってことなのかもですね。

書いてあるままに、有り体に理解するとすれば、Cocoaみたいに特定のフレームワークを使わなくても、もっと基底のAPIの動作がスレッド対応になっているので、OSを使おうとすれば、どういう方法であれマルチスレッドで動くという事みたい。

GCDでは「ここら辺が並列化可能っぽい」「その中でもここは並列化しないで逐次で実行して」と要所を指定していくぐらいの手間で、あとはエンジンが自動的にスレッドを用意して、各コアに処理を分散して実行させるところまでをサポートしてくれるようだ。
本当かなぁ。できれば、ここは並列化しないでくれないとダメですよ、だけでOKであればうれしいんだけど、それも使いどころが分からなければ困る気がしますね。C言語のvolatileほどには分かりやすくできる事は無理だろうし、結局面倒くさくて処理をディスエイブルにしちゃいそうな気もします。 Grand Central Dispatchっていう名前だけれども、Dispatchっていうのは、OSタスクとかのディスパッチと同様な感じなのかな。中央部分となる動作の根っこで、タスクごとじゃなくて、さらにスレッドに小分けしてディスパッチするって感じ? んー理解がいまいちだな。

タグ:Ruby
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。