[#43378] trouble on "requrie 'tk'" — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
5 messages
2011/04/02
[#43382] Re: [ruby-cvs:38408] Ruby:r31228 (trunk): Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org> — "Martin J. Dürst" <duerst@...>
RFC2965 とか 'Netscape spec' より、
4 messages
2011/04/04
[#43403] Re: [ruby-cvs:38408] Ruby:r31228 (trunk): Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
— Hiroshi Nakamura <nakahiro@...>
2011/04/20
T24gTW9uLCBBcHIgNCwgMjAxMSBhdCAxMDozOCwgIk1hcnRpbiBKLiBEw7xyc3QiIDxkdWVyc3RA
[#43384] [Ruby 1.9 - Bug #4562][Open] [pull requested] ./config no-ssl2で作ったopensslとext/opensslが混ざらない — Shyouhei Urabe <redmine@...>
7 messages
2011/04/07
[#43392] StringIO#{readlines(0), each_line(0)}が無限ループする — Watson <watson1978@...>
メールのタイトル通りなのですが、
8 messages
2011/04/08
[#43393] Re: StringIO#{readlines(0), each_line(0)}が無限ループする
— "Shota Fukumori (sora_h)" <sorah@...>
2011/04/09
r31252 で修正しました。
[#43394] Re: StringIO#{readlines(0), each_line(0)}が無限ループする
— Nobuhiro IMAI <nov@...>
2011/04/09
いまいです。
[#43406] [Ruby 1.9 - Bug #4591][Open] (1.5...2).max #=> 1 (Range#max) — redmine@...
10 messages
2011/04/20
[#43407] Re: [Ruby 1.9 - Bug #4591][Open] (1.5...2).max #=> 1 (Range#max)
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/04/20
>
[#43412] [Ruby 1.9 - Feature #4592][Open] Tempfileを直接保存したい — Takeyuki Fujioka <xibbar@...>
15 messages
2011/04/21
[#45477] [ruby-trunk - Feature #4592] Tempfileを直接保存したい
— "mame (Yusuke Endoh)" <mame@...>
2012/03/31
[#45487] [ruby-trunk - Feature #4592] Tempfileを直接保存したい
— "mame (Yusuke Endoh)" <mame@...>
2012/04/02
[#43426] [Ruby 1.9 - Feature #4602][Open] naming ruby dll (win32/64) — Akio Tajima <artonx@...>
11 messages
2011/04/23
[#43427] [Ruby 1.9 - Feature #4605][Open] Random#randとKernel#randでRangeを扱えるように — Yuya Yaguchi <yayugu@...>
7 messages
2011/04/24
[#43437] Re: [ruby-cvs:38520] Ruby:r31340 (trunk): * random.c (random_s_rand, Init_Random): Random.rand should behave as — Urabe Shyouhei <shyouhei@...>
卜部です
6 messages
2011/04/25
[#43453] ThreadGroup の強化案 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
14 messages
2011/04/28
[#43901] ThreadGroup#make_local_space! (Re: ThreadGroup の強化案)
— Hidetoshi NAGAI <nagai@...>
2011/06/25
永井@知能.九工大です.少々長いメールで失礼します.
[#43920] Re: ThreadGroup#make_local_space! (Re: ThreadGroup の強化案)
— Urabe Shyouhei <shyouhei@...>
2011/06/26
ひっじょうに根本的な質問をするのですけれども、ThreadGroupって何に使うん
[#43978] Re: ThreadGroup#make_local_space!
— Hidetoshi NAGAI <nagai@...>
2011/06/28
永井@知能.九工大です.
[#43979] Re: ThreadGroup#make_local_space!
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/06/28
(2011/06/28 15:15), Hidetoshi NAGAI wrote:
[#43456] Readline.completion_append_character — Nobuhiro IMAI <nov@...>
いまいです。
6 messages
2011/04/29
[#43458] Re: Readline.completion_append_character
— Takao Kouji <kouji@...7.net>
2011/04/30
=1B$B9bHx$G$9!#=1B(B
[ruby-dev:43432] [Ruby 1.9 - Feature #4607][Open] benchmark/bm_vm3_thread_mutex.rb の性能改善
From:
Motohiro KOSAKI <kosaki.motohiro@...>
Date:
2011-04-24 15:16:25 UTC
List:
ruby-dev #43432
Issue #4607 has been reported by Motohiro KOSAKI.
----------------------------------------
Feature #4607: benchmark/bm_vm3_thread_mutex.rb の性能改善
http://redmine.ruby-lang.org/issues/4607
Author: Motohiro KOSAKI
Status: Open
Priority: Normal
Assignee:
Category: core
Target version:
以下のようなmutexを取り合うプログラムが1.8.x と比べると1.9.xは有為に遅いです
bm_vm3_thread_mutex.rb
---------------------------------
require 'thread'
m = Mutex.new
r = 0
max = 1000
(1..max).map{
Thread.new{
i=0
while i<max
i+=1
m.synchronize{
r += 1
}
end
}
}.each{|e|
e.join
}
raise r.to_s if r != max * max
---------------------------------
1.8.7 1.106 sec
1.9.3dev 109.064 sec
遅いだけで機能的には困らないのですが、さすがに1分超えるテストがあると
make benchmark しるモチベーションが強烈に削られるので改善したいと思います。
され、遅い理由ですが。rb_mutex_lock()のlast_threadの判定にはraceがあります。lock_func()
に入ってGVLなしで走っている間はsleepにカウントされているので。かつlock_funcの中にはsched_yield()が
あるのもよくなくてスレッド数がCPU数超えてるときはここでpreemptionが起きる確率はかなり高いです。
で、last_threadだと判定するとビジーループをまわしつつrb_check_deadlock()を呼びまくる実装になっている
ので不必要なデッドロックチェックばかり走って肝心のロック保持スレッドがなかなか動けないので遅い。と
添付のようにビジーループを100msecのタイムアウト付きcond_waitに変えるだけで、それなりに改善します。
1.8.7 1.106 sec
1.9.3dev 109.064 sec
w/ patch 16.331 sec
make test-all, make benchmark ともに劣化はなさそうなので入れてしまってもいいでしょうか?
--
http://redmine.ruby-lang.org