diff options
author | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-04-29 01:44:32 +0000 |
---|---|---|
committer | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-04-29 01:44:32 +0000 |
commit | 3c24bc37a00901427add4f96f7f37411a0eb8da5 (patch) | |
tree | 21fdd1f353327ecefe5da35d2d95dd2e24046bb7 | |
parent | e4ba4b79b657f784ab52a339958c1ebb2320e906 (diff) | |
download | ruby-3c24bc37a00901427add4f96f7f37411a0eb8da5.tar.gz |
* benchmark/bm_vm4_pipe.rb: Add two new benchmark for GVL
performance. They was written by Koichi Sasada.
* benchmark/bm_vm4_thread_pass.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | benchmark/bm_vm4_pipe.rb | 17 | ||||
-rw-r--r-- | benchmark/bm_vm4_thread_pass.rb | 15 |
3 files changed, 38 insertions, 0 deletions
@@ -1,3 +1,9 @@ +Fri Apr 29 10:43:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com> + + * benchmark/bm_vm4_pipe.rb: Add two new benchmark for GVL + performance. They was written by Koichi Sasada. + * benchmark/bm_vm4_thread_pass.rb: ditto. + Fri Apr 29 10:25:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com> * vm_method.c (rb_clear_cache_by_class): Revert r29673. It made diff --git a/benchmark/bm_vm4_pipe.rb b/benchmark/bm_vm4_pipe.rb new file mode 100644 index 0000000000..d33c5223a9 --- /dev/null +++ b/benchmark/bm_vm4_pipe.rb @@ -0,0 +1,17 @@ +# Mesure small and plenty pipe read/write. +# A performance may depend on GVL implementation. + +lmax = 1_000_000 +r, w = IO.pipe +[Thread.new{ + lmax.times{ + w.write('a') + } + p "w:exit" +}, Thread.new{ + lmax.times{ + r.read(1) + } + p "r:exit" +}].each{|t| t.join} + diff --git a/benchmark/bm_vm4_thread_pass.rb b/benchmark/bm_vm4_thread_pass.rb new file mode 100644 index 0000000000..171bfecbfe --- /dev/null +++ b/benchmark/bm_vm4_thread_pass.rb @@ -0,0 +1,15 @@ +# Plenty Thtread.pass +# A performance may depend on GVL implementation. + +tmax = (ARGV.shift || 2).to_i +lmax = 2_000_000 / tmax + +(1..tmax).map{ + Thread.new{ + lmax.times{ + Thread.pass + } + } +}.each{|t| t.join} + + |