зеркало из https://github.com/github/ruby.git
* sample/simple-bench.rb: added to measure performance of simple
lines. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
1d4e282d75
Коммит
16377c36b9
|
@ -1,3 +1,8 @@
|
|||
Mon Nov 3 02:35:32 2014 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* sample/simple-bench.rb: added to measure performance of simple
|
||||
lines.
|
||||
|
||||
Mon Nov 3 02:33:43 2014 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* gc.c (obj_info): show T_STRING more details.
|
||||
|
|
|
@ -0,0 +1,140 @@
|
|||
require 'benchmark'
|
||||
|
||||
def foo0
|
||||
end
|
||||
def foo3 a, b, c
|
||||
end
|
||||
def foo6 a, b, c, d, e, f
|
||||
end
|
||||
|
||||
def iter0
|
||||
yield
|
||||
end
|
||||
|
||||
def iter1
|
||||
yield 1
|
||||
end
|
||||
|
||||
def iter3
|
||||
yield 1, 2, 3
|
||||
end
|
||||
|
||||
def iter6
|
||||
yield 1, 2, 3, 4, 5, 6
|
||||
end
|
||||
|
||||
(1..6).each{|i|
|
||||
kws = (1..i).map{|e| "k#{e}: #{e}"}
|
||||
eval %Q{
|
||||
def foo_kw#{i}(#{kws.join(', ')})
|
||||
end
|
||||
}
|
||||
|
||||
kws = (1..i).map{|e| "k#{e}:"}
|
||||
eval %Q{
|
||||
def foo_required_kw#{i}(#{kws.join(', ')})
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
(1..6).each{|i|
|
||||
kws = (1..i).map{|e| "k#{e}: #{e} + 1"}
|
||||
eval %Q{
|
||||
def foo_complex_kw#{i}(#{kws.join(', ')})
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
(1..6).each{|i|
|
||||
kws = (1..i).map{|e| "k#{e}: #{e}"}
|
||||
eval %Q{
|
||||
def iter_kw#{i}
|
||||
yield #{kws.join(', ')}
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
ary1 = [1]
|
||||
ary2 = [[1, 2, 3, 4, 5]]
|
||||
|
||||
test_methods = %Q{
|
||||
# empty 1
|
||||
# empty 2
|
||||
foo0
|
||||
foo3 1, 2, 3
|
||||
foo6 1, 2, 3, 4, 5, 6
|
||||
foo_kw1
|
||||
foo_kw2
|
||||
foo_kw3
|
||||
foo_kw4
|
||||
foo_kw5
|
||||
foo_kw6
|
||||
foo_kw6 k1: 1
|
||||
foo_kw6 k1: 1, k2: 2
|
||||
foo_kw6 k1: 1, k2: 2, k3: 3
|
||||
foo_kw6 k1: 1, k2: 2, k3: 3, k4: 4
|
||||
foo_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5
|
||||
foo_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5, k6: 6
|
||||
foo_required_kw1 k1: 1
|
||||
foo_required_kw2 k1: 1, k2: 2
|
||||
foo_required_kw3 k1: 1, k2: 2, k3: 3
|
||||
foo_required_kw4 k1: 1, k2: 2, k3: 3, k4: 4
|
||||
foo_required_kw5 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5
|
||||
foo_required_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5, k6: 6
|
||||
foo_complex_kw1
|
||||
foo_complex_kw2
|
||||
foo_complex_kw3
|
||||
foo_complex_kw4
|
||||
foo_complex_kw5
|
||||
foo_complex_kw6
|
||||
foo_complex_kw6 k1: 1
|
||||
foo_complex_kw6 k1: 1, k2: 2
|
||||
foo_complex_kw6 k1: 1, k2: 2, k3: 3
|
||||
foo_complex_kw6 k1: 1, k2: 2, k3: 3, k4: 4
|
||||
foo_complex_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5
|
||||
foo_complex_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5, k6: 6
|
||||
iter0{}
|
||||
iter1{}
|
||||
iter1{|a|}
|
||||
iter3{}
|
||||
iter3{|a|}
|
||||
iter3{|a, b, c|}
|
||||
iter6{}
|
||||
iter6{|a|}
|
||||
iter6{|a, b, c, d, e, f, g|}
|
||||
iter0{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
|
||||
iter_kw1{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
|
||||
iter_kw2{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
|
||||
iter_kw3{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
|
||||
iter_kw4{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
|
||||
iter_kw5{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
|
||||
iter_kw6{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
|
||||
ary1.each{|e|}
|
||||
ary1.each{|e,|}
|
||||
ary1.each{|a, b, c, d, e|}
|
||||
ary2.each{|e|}
|
||||
ary2.each{|e,|}
|
||||
ary2.each{|a, b, c, d, e|}
|
||||
}
|
||||
|
||||
N = 10_000_000
|
||||
|
||||
max_line = test_methods.each_line.max_by{|line| line.strip.size}
|
||||
max_size = max_line.strip.size
|
||||
|
||||
Benchmark.bm(max_size){|x|
|
||||
|
||||
str = test_methods.each_line.map{|line| line.strip!
|
||||
next if line.empty?
|
||||
%Q{
|
||||
x.report(#{line.dump}){
|
||||
i = 0
|
||||
while i<#{N}
|
||||
#{line}
|
||||
i+=1
|
||||
end
|
||||
}
|
||||
}
|
||||
}.join("\n")
|
||||
eval str
|
||||
}
|
Загрузка…
Ссылка в новой задаче