単一代入制約とメッセージ通信の効率

Eralngは一度、束縛(値の代入)をした変数の値を書き換えることが出来ないようになっている。
これが軽量プロセスの効率化に寄与していることは、想像していた(Rubyの高橋さんもそうでしょうといってた)。

つっこんで考えてなかったんですけど、Erlang-MLで
「単一代入制約(single assignment restriction)のおかけでプロセス間でデータを受け渡すときに、ポインタだけ受け渡せばよいから速いんじゃないか」
ということを書いている人がいた。

あ、そっか、そういうことか。
送信元のプロセスが、変数を書き換えることがありえないから、
ロックとか考えなくてよくて、ポインタだけ渡せばいいんですね。
なるほど。

そういえば、SMPオプションをつけると遅くなる件がみかログで報告されてます。
VMwareの仮想SMPもオーバーヘッドがあるみたいで、それより
コア数分だけシングルSPUのVMを起動するほうがいいらしいっす。
ErlangもSMPオプションをつけるより、コア数分だけ実プロセスを起動したほうが
速いってことかも。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 単一代入制約とメッセージ通信の効率

このブログ記事に対するトラックバックURL: http://do-gugan.com/cgi-bin/mt/mt-tb.cgi/2161

コメントする

2008年8月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

アーカイブ