diff options
-rw-r--r-- | ChangeLog | 19 | ||||
-rw-r--r-- | benchmark/bm_vm1_gc_short_lived.rb | 10 | ||||
-rw-r--r-- | benchmark/bm_vm1_gc_short_with_complex_long.rb | 27 | ||||
-rw-r--r-- | benchmark/bm_vm1_gc_short_with_long.rb | 13 | ||||
-rw-r--r-- | benchmark/bm_vm1_gc_short_with_symbol.rb | 15 | ||||
-rw-r--r-- | benchmark/bm_vm1_gc_wb_ary.rb | 10 | ||||
-rw-r--r-- | benchmark/bm_vm1_gc_wb_obj.rb | 13 | ||||
-rw-r--r-- | benchmark/bm_vm_thread_queue.rb | 18 |
8 files changed, 125 insertions, 0 deletions
@@ -1,3 +1,22 @@ +Wed Nov 6 09:14:31 2013 Koichi Sasada <ko1@atdot.net> + + * 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 <ko1@atdot.net> * 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
|