まつもと ゆきひろです
In message "[ruby-list:9263] thread overhead"
on 98/08/25, "D.Kanda" <MAP2303 / mapletown.net> writes:
| かんだです。
| Thread のオーバーヘッドについて質問があります。
Threadのオーバヘッドについては実は定量的な測定が行われたこと
はないので,なんともいえない部分があるのですが,分かっている
ことは以下のことです.
* RubyのThreadはコンテキスト切り替え時にスタックの内容を全
部コピーしているので遅い.が,スクリプト言語として利用す
るのに十分な速度は持っている(はず).
* Threadの生成のためのコストは通常のオブジェクトを生成する
コストと大差ない(はず).Rubyでは大量にオブジェクトを生成
するので,このコストが気になる人はRubyを使えないだろう.
* 止まっているスレッドの数はコンテキスト切り替えがわずかに
遅くなるだけで,存在そのものが負担にはならない.
* 生きているスレッドがたくさんあってもコンテキスト切り替え
のコストはそれほど変わらない.スラッシングも起きない.
| stop() して保存しておくのと、毎回新しいスレッドを生成するのとではどちら
|が効率がよいのでしょうか?
というわけで,私からの回答は「やってみないとわからない」とい
うやや情けないものなんですが,多分,単純に毎回新しいスレッド
を生成する方がプログラムの見通しが良くなるような気がします.
まつもと ゆきひろ /:|)