* 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:
ko1 2011-06-12 04:38:50 +00:00
Родитель 60e078c860
Коммит 3c9187a2ad
4 изменённых файлов: 73 добавлений и 18 удалений

Просмотреть файл

@ -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