From df6722d9fc3d03c1804f5b988d4cdb5b4dff9fd9 Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 6 Nov 2013 00:17:14 +0000 Subject: * benchmark/bm_vm1_gc_short_lived.rb: added. These GC benchmarks do not reflect practical applications. They are only for tuning. * benchmark/bm_vm1_gc_short_with_complex_long.rb: added. * benchmark/bm_vm1_gc_short_with_long.rb: added. * benchmark/bm_vm1_gc_short_with_symbol.rb: added. * benchmark/bm_vm1_gc_wb_ary.rb: added. * benchmark/bm_vm1_gc_wb_obj.rb: added. * benchmark/bm_vm_thread_queue.rb: added. Thie benchmark is added to know how fast C verion of thread.so. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- benchmark/bm_vm1_gc_short_lived.rb | 10 ++++++++++ benchmark/bm_vm1_gc_short_with_complex_long.rb | 27 ++++++++++++++++++++++++++ benchmark/bm_vm1_gc_short_with_long.rb | 13 +++++++++++++ benchmark/bm_vm1_gc_short_with_symbol.rb | 15 ++++++++++++++ benchmark/bm_vm1_gc_wb_ary.rb | 10 ++++++++++ benchmark/bm_vm1_gc_wb_obj.rb | 13 +++++++++++++ benchmark/bm_vm_thread_queue.rb | 18 +++++++++++++++++ 7 files changed, 106 insertions(+) create mode 100644 benchmark/bm_vm1_gc_short_lived.rb create mode 100644 benchmark/bm_vm1_gc_short_with_complex_long.rb create mode 100644 benchmark/bm_vm1_gc_short_with_long.rb create mode 100644 benchmark/bm_vm1_gc_short_with_symbol.rb create mode 100644 benchmark/bm_vm1_gc_wb_ary.rb create mode 100644 benchmark/bm_vm1_gc_wb_obj.rb create mode 100644 benchmark/bm_vm_thread_queue.rb (limited to 'benchmark') diff --git a/benchmark/bm_vm1_gc_short_lived.rb b/benchmark/bm_vm1_gc_short_lived.rb new file mode 100644 index 0000000..2bdb6ff9 --- /dev/null +++ b/benchmark/bm_vm1_gc_short_lived.rb @@ -0,0 +1,10 @@ +i = 0 +while i<30_000_000 # while loop 1 + a = '' # short-lived String + b = '' + c = '' + d = '' + e = '' + f = '' + i+=1 +end diff --git a/benchmark/bm_vm1_gc_short_with_complex_long.rb b/benchmark/bm_vm1_gc_short_with_complex_long.rb new file mode 100644 index 0000000..05e03b5 --- /dev/null +++ b/benchmark/bm_vm1_gc_short_with_complex_long.rb @@ -0,0 +1,27 @@ +def nested_hash h, n + if n == 0 + '' + else + 10.times{ + h[Object.new] = nested_hash(h, n-1) + } + end +end + +long_lived = Hash.new +nested_hash long_lived, 6 + +GC.start +GC.start + +i = 0 +while i<30_000_000 # while loop 1 + a = '' # short-lived String + b = '' + c = '' + d = '' + e = '' + f = '' + i+=1 +end + diff --git a/benchmark/bm_vm1_gc_short_with_long.rb b/benchmark/bm_vm1_gc_short_with_long.rb new file mode 100644 index 0000000..50b7d4d --- /dev/null +++ b/benchmark/bm_vm1_gc_short_with_long.rb @@ -0,0 +1,13 @@ +long_lived = Array.new(1_000_000){|i| "#{i}"} +GC.start +GC.start +i = 0 +while i<30_000_000 # while loop 1 + a = '' # short-lived String + b = '' + c = '' + d = '' + e = '' + f = '' + i+=1 +end diff --git a/benchmark/bm_vm1_gc_short_with_symbol.rb b/benchmark/bm_vm1_gc_short_with_symbol.rb new file mode 100644 index 0000000..b0dc4ff --- /dev/null +++ b/benchmark/bm_vm1_gc_short_with_symbol.rb @@ -0,0 +1,15 @@ +# make many symbols +50_000.times{|i| sym = "sym#{i}".to_sym} +GC.start +GC.start + +i = 0 +while i<30_000_000 # while loop 1 + a = '' # short-lived String + b = '' + c = '' + d = '' + e = '' + f = '' + i+=1 +end diff --git a/benchmark/bm_vm1_gc_wb_ary.rb b/benchmark/bm_vm1_gc_wb_ary.rb new file mode 100644 index 0000000..98231ee --- /dev/null +++ b/benchmark/bm_vm1_gc_wb_ary.rb @@ -0,0 +1,10 @@ +long_lived = [] +GC.start +GC.start + +i = 0 +short_lived = '' +while i<30_000_000 # while loop 1 + long_lived[0] = short_lived # write barrier + i+=1 +end diff --git a/benchmark/bm_vm1_gc_wb_obj.rb b/benchmark/bm_vm1_gc_wb_obj.rb new file mode 100644 index 0000000..60548ac --- /dev/null +++ b/benchmark/bm_vm1_gc_wb_obj.rb @@ -0,0 +1,13 @@ +class C + attr_accessor :foo +end +long_lived = C.new +GC.start +GC.start + +i = 0 +short_lived = '' +while i<30_000_000 # while loop 1 + long_lived.foo = short_lived # write barrier + i+=1 +end diff --git a/benchmark/bm_vm_thread_queue.rb b/benchmark/bm_vm_thread_queue.rb new file mode 100644 index 0000000..b3adcc2 --- /dev/null +++ b/benchmark/bm_vm_thread_queue.rb @@ -0,0 +1,18 @@ +require 'thread' + +n = 1_000_000 +q = Queue.new +consumer = Thread.new{ + while q.pop + # consuming + end +} + +producer = Thread.new{ + n.times{ + q.push true + } + q.push nil +} + +consumer.join -- cgit v1.1