diff --git a/ChangeLog b/ChangeLog index 649ad915af..e94d5437ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +Wed Nov 6 09:14:31 2013 Koichi Sasada + + * 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. + Wed Nov 6 09:13:32 2013 Koichi Sasada * gc.c: define RGENGC_ESTIMATE_OLDSPACE == 0 if USE_RGENGC is 0. diff --git a/benchmark/bm_vm1_gc_short_lived.rb b/benchmark/bm_vm1_gc_short_lived.rb new file mode 100644 index 0000000000..2bdb6ff932 --- /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 0000000000..05e03b52f5 --- /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 0000000000..50b7d4d793 --- /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 0000000000..b0dc4fffca --- /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 0000000000..98231eebb5 --- /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 0000000000..60548ac058 --- /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 0000000000..b3adcc24a5 --- /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