永井@知能.九工大です.

From: SASADA Koichi <ko1 / atdot.net>
Subject: [ruby-dev:39358] Re: [ruby19] Thread 切替えが異常に遅い?
Date: Sun, 20 Sep 2009 23:57:02 +0900
Message-ID: <4AB642BA.8090500 / atdot.net>
>  ちなみに,CPU とか環境はなんでしょうか.SMP(マルチコアなど)環境だ
> と,遅くなることがわかっていて,なんとかしたいなぁ,と思いながら数年たっ
> てしまいました.1.9.2 までにはなんとかする,余裕が欲しい.

Thread#raise が極端に遅くなっていたりしませんか?
こういうの(↓)を 1.8 と 1.9 とで試すと,
----<a.rb>---------------------------------------
th = Thread.new{
  begin
    sleep
  rescue
    retry
  end
}
1000.times{
  Thread.pass until th.status == 'sleep'
  th.raise RuntimeError.new('hoge')
}
-------------------------------------------------

こんな感じ(↓)になります.

$ ruby -v
ruby 1.8.8dev (2009-08-07 revision 24442) [i686-linux]

$ time ruby a.rb
real    0m0.044s
user    0m0.040s
sys     0m0.004s

$ ruby19 -v
ruby 1.9.2dev (2009-09-19) [i686-linux]

$ time ruby19 a.rb
real    1m47.132s
user    0m0.012s
sys     0m0.004s

うちの環境だけの問題でしょうか.
-- 
永井 秀利  (nagai / ai.kyutech.ac.jp)
九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門