From: Nobuyoshi Nakada Date: 2009-09-23T12:36:18+09:00 Subject: [ruby-dev:39364] Re: [ruby19] Thread 切替えが異常に遅い? なかだです。 At Mon, 21 Sep 2009 16:52:33 +0900, Hidetoshi NAGAI wrote in [ruby-dev:39360]: > Thread#raise が極端に遅くなっていたりしませんか? > こういうの(↓)を 1.8 と 1.9 とで試すと, > ------------------------------------------- > th = Thread.new{ > begin > sleep > rescue > retry > end > } > 1000.times{ > Thread.pass until th.status == 'sleep' > th.raise RuntimeError.new('hoge') > } > ------------------------------------------------- 数十パーセント程度遅めですが、2000倍にはほど遠いですね。 $ cat ruby-dev-39360.rb require 'benchmark' Benchmark.bm do |bm| bm.report { th = Thread.new{ begin sleep rescue retry end } 1000.times{|i| begin Thread.pass abort "thread died at #{i}" unless status = th.status end until th.status == 'sleep' th.raise('hoge') } } end $ ruby18 ruby-dev-39360.rb user system total real 0.030000 0.010000 0.040000 ( 0.040728) $ ruby19 ruby-dev-39360.rb user system total real 0.030000 0.030000 0.060000 ( 0.063855) -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦