зеркало из https://github.com/github/ruby.git
* benchmark/bm_vm3_thread_mutex.rb: remove it.
* benchmark/bm_vm3_thread_mutex[1-3].rb: added 3 benchmarks. 1: one thread with one mutex (no contention). 2: two threads with one mutex (contention). 3: 1000 threads with one mutex (huge number of contention) Abobe removed benchmark was type 3. Therefore, this commit adds type 1 and 2 benchmark. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
60e078c860
Коммит
3c9187a2ad
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
Sun Jun 12 13:33:52 2011 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* benchmark/bm_vm3_thread_mutex.rb: remove it.
|
||||
|
||||
* benchmark/bm_vm3_thread_mutex[1-3].rb: added 3 benchmarks.
|
||||
1: one thread with one mutex (no contention).
|
||||
2: two threads with one mutex (contention).
|
||||
3: 1000 threads with one mutex (huge number of contention)
|
||||
Abobe removed benchmark was type 3.
|
||||
Therefore, this commit adds type 1 and 2 benchmark.
|
||||
|
||||
Sun Jun 12 11:16:59 2011 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* io.c: use select() appropriately for sendfile().
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# one thread, one mutex (no contention)
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
lmax = max * max
|
||||
(1..1).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<lmax
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
|
@ -0,0 +1,21 @@
|
|||
# two threads, one mutex
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
lmax = (max * max)/2
|
||||
(1..2).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<lmax
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
|
@ -1,18 +1,20 @@
|
|||
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
|
||||
# 1000 threads, one mutex
|
||||
|
||||
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
|
Загрузка…
Ссылка в новой задаче