mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
3db0e56472
commit
df6722d9fc
8 changed files with 125 additions and 0 deletions
19
ChangeLog
19
ChangeLog
|
@ -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.
|
||||
|
|
10
benchmark/bm_vm1_gc_short_lived.rb
Normal file
10
benchmark/bm_vm1_gc_short_lived.rb
Normal file
|
@ -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
|
27
benchmark/bm_vm1_gc_short_with_complex_long.rb
Normal file
27
benchmark/bm_vm1_gc_short_with_complex_long.rb
Normal file
|
@ -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
|
||||
|
13
benchmark/bm_vm1_gc_short_with_long.rb
Normal file
13
benchmark/bm_vm1_gc_short_with_long.rb
Normal file
|
@ -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
|
15
benchmark/bm_vm1_gc_short_with_symbol.rb
Normal file
15
benchmark/bm_vm1_gc_short_with_symbol.rb
Normal file
|
@ -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
|
10
benchmark/bm_vm1_gc_wb_ary.rb
Normal file
10
benchmark/bm_vm1_gc_wb_ary.rb
Normal file
|
@ -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
|
13
benchmark/bm_vm1_gc_wb_obj.rb
Normal file
13
benchmark/bm_vm1_gc_wb_obj.rb
Normal file
|
@ -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
|
18
benchmark/bm_vm_thread_queue.rb
Normal file
18
benchmark/bm_vm_thread_queue.rb
Normal file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue