まつもと ゆきひろです

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() して保存しておくのと、毎回新しいスレッドを生成するのとではどちら
|が効率がよいのでしょうか?

というわけで,私からの回答は「やってみないとわからない」とい
うやや情けないものなんですが,多分,単純に毎回新しいスレッド
を生成する方がプログラムの見通しが良くなるような気がします.

                                まつもと ゆきひろ /:|)