mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
benchmark/vm1_*.yml: abstract away the while loop
benchmark/driver.rb had removed the cost for while loop in benchmark/bm_vm1_*.rb, and benchmark_driver.gem can achieve the same thing with `loop_count`. But unfortunately current benchmark_driver.gem can't solve it only for vm1_yield.yml... git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9e62c93d0d
commit
820ad9cb1d
30 changed files with 242 additions and 336 deletions
|
@ -73,15 +73,13 @@ loop_count: 1
|
||||||
next if @pattern && /#{@pattern}/ !~ File.basename(file)
|
next if @pattern && /#{@pattern}/ !~ File.basename(file)
|
||||||
next if @exclude && /#{@exclude}/ =~ File.basename(file)
|
next if @exclude && /#{@exclude}/ =~ File.basename(file)
|
||||||
case file
|
case file
|
||||||
when /bm_(vm[12])_/, /bm_loop_(whileloop2?).rb/
|
when /bm_(vm2)_/, /bm_loop_(whileloop2).rb/
|
||||||
flag[$1] = true
|
flag[$1] = true
|
||||||
end
|
end
|
||||||
file
|
file
|
||||||
}.compact
|
}.compact
|
||||||
|
|
||||||
if flag['vm1'] && !flag['whileloop']
|
if flag['vm2'] && !flag['whileloop2']
|
||||||
files << File.join(@dir, 'bm_loop_whileloop.rb')
|
|
||||||
elsif flag['vm2'] && !flag['whileloop2']
|
|
||||||
files << File.join(@dir, 'bm_loop_whileloop2.rb')
|
files << File.join(@dir, 'bm_loop_whileloop2.rb')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
|
prelude: |
|
||||||
|
class C
|
||||||
|
attr_reader :a, :b
|
||||||
|
def initialize
|
||||||
|
@a = nil
|
||||||
|
@b = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
obj = C.new
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_attr_ivar: |
|
vm1_attr_ivar: |
|
||||||
class C
|
j = obj.a
|
||||||
attr_reader :a, :b
|
k = obj.b
|
||||||
def initialize
|
loop_count: 30000000
|
||||||
@a = nil
|
|
||||||
@b = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
obj = C.new
|
|
||||||
i = 0
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
j = obj.a
|
|
||||||
k = obj.b
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
|
prelude: |
|
||||||
|
class C
|
||||||
|
attr_accessor :a, :b
|
||||||
|
def initialize
|
||||||
|
@a = nil
|
||||||
|
@b = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
obj = C.new
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_attr_ivar_set: |
|
vm1_attr_ivar_set: |
|
||||||
class C
|
obj.a = 1
|
||||||
attr_accessor :a, :b
|
obj.b = 2
|
||||||
def initialize
|
loop_count: 30000000
|
||||||
@a = nil
|
|
||||||
@b = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
obj = C.new
|
|
||||||
i = 0
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
obj.a = 1
|
|
||||||
obj.b = 2
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
|
prelude: |
|
||||||
|
def m
|
||||||
|
yield
|
||||||
|
end
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_block: |
|
vm1_block: |
|
||||||
def m
|
m{
|
||||||
yield
|
}
|
||||||
end
|
loop_count: 30000000
|
||||||
|
|
||||||
i = 0
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
m{
|
|
||||||
}
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
|
prelude: |
|
||||||
|
def m &b
|
||||||
|
end
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_blockparam: |
|
vm1_blockparam: 'm{}
|
||||||
def m &b
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
'
|
||||||
while i<30_000_000 # while loop 1
|
loop_count: 30000000
|
||||||
i += 1
|
|
||||||
m{}
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
|
prelude: |
|
||||||
|
def m &b
|
||||||
|
b.call
|
||||||
|
end
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_blockparam_call: |
|
vm1_blockparam_call: 'm{}
|
||||||
def m &b
|
|
||||||
b.call
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
'
|
||||||
while i<30_000_000 # while loop 1
|
loop_count: 30000000
|
||||||
i += 1
|
|
||||||
m{}
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
|
prelude: |
|
||||||
|
def bp_yield
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
|
||||||
|
def bp_pass &b
|
||||||
|
bp_yield &b
|
||||||
|
end
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_blockparam_pass: |
|
vm1_blockparam_pass: 'bp_pass{}
|
||||||
def bp_yield
|
|
||||||
yield
|
|
||||||
end
|
|
||||||
|
|
||||||
def bp_pass &b
|
'
|
||||||
bp_yield &b
|
loop_count: 30000000
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
bp_pass{}
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
|
prelude: |
|
||||||
|
def bp_yield &b
|
||||||
|
yield
|
||||||
|
end
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_blockparam_yield: |
|
vm1_blockparam_yield: 'bp_yield{}
|
||||||
def bp_yield &b
|
|
||||||
yield
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
'
|
||||||
while i<30_000_000 # while loop 1
|
loop_count: 30000000
|
||||||
i += 1
|
|
||||||
bp_yield{}
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
|
prelude: 'Const = 1
|
||||||
|
|
||||||
|
'
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_const: |
|
vm1_const: |
|
||||||
Const = 1
|
j = Const
|
||||||
|
k = Const
|
||||||
i = 0
|
loop_count: 30000000
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
j = Const
|
|
||||||
k = Const
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_ensure: |
|
vm1_ensure: |
|
||||||
i = 0
|
begin
|
||||||
while i<30_000_000 # benchmark loop 1
|
|
||||||
i += 1
|
|
||||||
begin
|
begin
|
||||||
begin
|
|
||||||
ensure
|
|
||||||
end
|
|
||||||
ensure
|
ensure
|
||||||
end
|
end
|
||||||
|
ensure
|
||||||
end
|
end
|
||||||
loop_count: 1
|
loop_count: 30000000
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
|
prelude: |
|
||||||
|
f = 0.0
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_float_simple: |
|
vm1_float_simple: |
|
||||||
i = 0.0; f = 0.0
|
f += 0.1; f -= 0.1
|
||||||
while i<30_000_000
|
f += 0.1; f -= 0.1
|
||||||
i += 1
|
f += 0.1; f -= 0.1
|
||||||
f += 0.1; f -= 0.1
|
loop_count: 30000000
|
||||||
f += 0.1; f -= 0.1
|
|
||||||
f += 0.1; f -= 0.1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_short_lived: |
|
vm1_gc_short_lived: |
|
||||||
i = 0
|
a = '' # short-lived String
|
||||||
while i<30_000_000 # while loop 1
|
b = ''
|
||||||
a = '' # short-lived String
|
c = ''
|
||||||
b = ''
|
d = ''
|
||||||
c = ''
|
e = ''
|
||||||
d = ''
|
f = ''
|
||||||
e = ''
|
loop_count: 30000000
|
||||||
f = ''
|
|
||||||
i+=1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,29 +1,25 @@
|
||||||
|
prelude: |
|
||||||
|
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
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_short_with_complex_long: |
|
vm1_gc_short_with_complex_long: |
|
||||||
def nested_hash h, n
|
a = '' # short-lived String
|
||||||
if n == 0
|
b = ''
|
||||||
''
|
c = ''
|
||||||
else
|
d = ''
|
||||||
10.times{
|
e = ''
|
||||||
h[Object.new] = nested_hash(h, n-1)
|
f = ''
|
||||||
}
|
loop_count: 30000000
|
||||||
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
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
|
prelude: |
|
||||||
|
long_lived = Array.new(1_000_000){|i| "#{i}"}
|
||||||
|
GC.start
|
||||||
|
GC.start
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_short_with_long: |
|
vm1_gc_short_with_long: |
|
||||||
long_lived = Array.new(1_000_000){|i| "#{i}"}
|
a = '' # short-lived String
|
||||||
GC.start
|
b = ''
|
||||||
GC.start
|
c = ''
|
||||||
i = 0
|
d = ''
|
||||||
while i<30_000_000 # while loop 1
|
e = ''
|
||||||
a = '' # short-lived String
|
f = ''
|
||||||
b = ''
|
loop_count: 30000000
|
||||||
c = ''
|
|
||||||
d = ''
|
|
||||||
e = ''
|
|
||||||
f = ''
|
|
||||||
i+=1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,19 +1,13 @@
|
||||||
prelude: |
|
prelude: |
|
||||||
# make many symbols
|
50_000.times{|i| sym = "sym#{i}".to_sym}
|
||||||
|
GC.start
|
||||||
|
GC.start
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_short_with_symbol: |
|
vm1_gc_short_with_symbol: |
|
||||||
50_000.times{|i| sym = "sym#{i}".to_sym}
|
a = '' # short-lived String
|
||||||
GC.start
|
b = ''
|
||||||
GC.start
|
c = ''
|
||||||
|
d = ''
|
||||||
i = 0
|
e = ''
|
||||||
while i<30_000_000 # while loop 1
|
f = ''
|
||||||
a = '' # short-lived String
|
loop_count: 30000000
|
||||||
b = ''
|
|
||||||
c = ''
|
|
||||||
d = ''
|
|
||||||
e = ''
|
|
||||||
f = ''
|
|
||||||
i+=1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,15 +1,12 @@
|
||||||
|
prelude: |
|
||||||
|
short_lived_ary = []
|
||||||
|
|
||||||
|
if RUBY_VERSION >= "2.2.0"
|
||||||
|
GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
short_lived = ''
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_wb_ary: |
|
vm1_gc_wb_ary: |
|
||||||
short_lived_ary = []
|
short_lived_ary[0] = short_lived # write barrier
|
||||||
|
loop_count: 30000000
|
||||||
if RUBY_VERSION >= "2.2.0"
|
|
||||||
GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
short_lived = ''
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
short_lived_ary[0] = short_lived # write barrier
|
|
||||||
i+=1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,17 +1,15 @@
|
||||||
|
prelude: |
|
||||||
|
long_lived = []
|
||||||
|
|
||||||
|
if RUBY_VERSION > "2.2.0"
|
||||||
|
3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
|
||||||
|
elsif
|
||||||
|
GC.start
|
||||||
|
end
|
||||||
|
|
||||||
|
short_lived = ''
|
||||||
|
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_wb_ary_promoted: |
|
vm1_gc_wb_ary_promoted: |
|
||||||
long_lived = []
|
long_lived[0] = short_lived # write barrier
|
||||||
|
loop_count: 30000000
|
||||||
if RUBY_VERSION > "2.2.0"
|
|
||||||
3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
|
|
||||||
elsif
|
|
||||||
GC.start
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
short_lived = ''
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
long_lived[0] = short_lived # write barrier
|
|
||||||
i+=1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,18 +1,15 @@
|
||||||
|
prelude: |
|
||||||
|
class C
|
||||||
|
attr_accessor :foo
|
||||||
|
end
|
||||||
|
short_lived_obj = C.new
|
||||||
|
|
||||||
|
if RUBY_VERSION >= "2.2.0"
|
||||||
|
GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
short_lived = ''
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_wb_obj: |
|
vm1_gc_wb_obj: |
|
||||||
class C
|
short_lived_obj.foo = short_lived # write barrier
|
||||||
attr_accessor :foo
|
loop_count: 30000000
|
||||||
end
|
|
||||||
short_lived_obj = C.new
|
|
||||||
|
|
||||||
if RUBY_VERSION >= "2.2.0"
|
|
||||||
GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true)
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
short_lived = ''
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
short_lived_obj.foo = short_lived # write barrier
|
|
||||||
i+=1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,20 +1,17 @@
|
||||||
|
prelude: |
|
||||||
|
class C
|
||||||
|
attr_accessor :foo
|
||||||
|
end
|
||||||
|
long_lived = C.new
|
||||||
|
|
||||||
|
if RUBY_VERSION >= "2.2.0"
|
||||||
|
3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
|
||||||
|
elsif
|
||||||
|
GC.start
|
||||||
|
end
|
||||||
|
|
||||||
|
short_lived = ''
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_gc_wb_obj_promoted: |
|
vm1_gc_wb_obj_promoted: |
|
||||||
class C
|
long_lived.foo = short_lived # write barrier
|
||||||
attr_accessor :foo
|
loop_count: 30000000
|
||||||
end
|
|
||||||
long_lived = C.new
|
|
||||||
|
|
||||||
if RUBY_VERSION >= "2.2.0"
|
|
||||||
3.times{ GC.start(full_mark: false, immediate_mark: true, immediate_sweep: true) }
|
|
||||||
elsif
|
|
||||||
GC.start
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
short_lived = ''
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
long_lived.foo = short_lived # write barrier
|
|
||||||
i+=1
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
|
prelude: "@a = 1\n"
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_ivar: |
|
vm1_ivar: |
|
||||||
@a = 1
|
j = @a
|
||||||
|
k = @a
|
||||||
i = 0
|
loop_count: 30000000
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
j = @a
|
|
||||||
k = @a
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_ivar_set: |
|
vm1_ivar_set: |
|
||||||
i = 0
|
@a = 1
|
||||||
while i<30_000_000 # while loop 1
|
@b = 2
|
||||||
i += 1
|
loop_count: 30000000
|
||||||
@a = 1
|
|
||||||
@b = 2
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
|
prelude: |
|
||||||
|
a = 'abc'
|
||||||
|
b = [1, 2, 3]
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_length: |
|
vm1_length: |
|
||||||
a = 'abc'
|
a.length
|
||||||
b = [1, 2, 3]
|
b.length
|
||||||
i = 0
|
loop_count: 30000000
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
a.length
|
|
||||||
b.length
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,20 +1,16 @@
|
||||||
|
prelude: |
|
||||||
|
def m v
|
||||||
|
unless v
|
||||||
|
# unreachable code
|
||||||
|
v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
|
||||||
|
v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
|
||||||
|
v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
|
||||||
|
v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
|
||||||
|
v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_lvar_init: |
|
vm1_lvar_init: 'm i
|
||||||
def m v
|
|
||||||
unless v
|
|
||||||
# unreachable code
|
|
||||||
v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
|
|
||||||
v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
|
|
||||||
v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
|
|
||||||
v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
|
|
||||||
v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
i = 0
|
'
|
||||||
|
loop_count: 30000000
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
m i
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_lvar_set: |
|
vm1_lvar_set: 'a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r
|
||||||
i = 0
|
= 1
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
'
|
||||||
a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r = 1
|
loop_count: 30000000
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
|
prelude: |
|
||||||
|
obj1 = Object.new
|
||||||
|
obj2 = Object.new
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_neq: |
|
vm1_neq: |
|
||||||
i = 0
|
obj1 != obj2
|
||||||
obj1 = Object.new
|
loop_count: 30000000
|
||||||
obj2 = Object.new
|
|
||||||
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
obj1 != obj2
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
|
prelude: |
|
||||||
|
obj = Object.new
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_not: |
|
vm1_not: |
|
||||||
i = 0
|
!obj
|
||||||
obj = Object.new
|
loop_count: 30000000
|
||||||
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
!obj
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_rescue: |
|
vm1_rescue: |
|
||||||
i = 0
|
begin
|
||||||
while i<30_000_000 # while loop 1
|
rescue
|
||||||
i += 1
|
|
||||||
begin
|
|
||||||
rescue
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
loop_count: 1
|
loop_count: 30000000
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
|
prelude: |
|
||||||
|
def m
|
||||||
|
return 1
|
||||||
|
end
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_simplereturn: |
|
vm1_simplereturn: 'm
|
||||||
def m
|
|
||||||
return 1
|
'
|
||||||
end
|
loop_count: 30000000
|
||||||
i = 0
|
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
m
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
|
prelude: |
|
||||||
|
a = 1
|
||||||
|
b = 2
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_swap: |
|
vm1_swap: 'a, b = b, a
|
||||||
a = 1
|
|
||||||
b = 2
|
'
|
||||||
i = 0
|
loop_count: 30000000
|
||||||
while i<30_000_000 # while loop 1
|
|
||||||
i += 1
|
|
||||||
a, b = b, a
|
|
||||||
end
|
|
||||||
loop_count: 1
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
# while loop cost is not removed due to benchmark_driver.gem's limitation
|
||||||
benchmark:
|
benchmark:
|
||||||
vm1_yield: |
|
vm1_yield: |
|
||||||
def m
|
def m
|
||||||
i = 0
|
i = 0
|
||||||
while i<30_000_000 # while loop 1
|
while i<30_000_000
|
||||||
i += 1
|
i += 1
|
||||||
yield
|
yield
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue