* properties.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
svn 2014-11-02 17:36:57 +00:00
parent 16377c36b9
commit 055a465ac4

View File

@ -1,140 +1,140 @@
require 'benchmark' require 'benchmark'
def foo0 def foo0
end end
def foo3 a, b, c def foo3 a, b, c
end end
def foo6 a, b, c, d, e, f def foo6 a, b, c, d, e, f
end end
def iter0 def iter0
yield yield
end end
def iter1 def iter1
yield 1 yield 1
end end
def iter3 def iter3
yield 1, 2, 3 yield 1, 2, 3
end end
def iter6 def iter6
yield 1, 2, 3, 4, 5, 6 yield 1, 2, 3, 4, 5, 6
end end
(1..6).each{|i| (1..6).each{|i|
kws = (1..i).map{|e| "k#{e}: #{e}"} kws = (1..i).map{|e| "k#{e}: #{e}"}
eval %Q{ eval %Q{
def foo_kw#{i}(#{kws.join(', ')}) def foo_kw#{i}(#{kws.join(', ')})
end end
} }
kws = (1..i).map{|e| "k#{e}:"} kws = (1..i).map{|e| "k#{e}:"}
eval %Q{ eval %Q{
def foo_required_kw#{i}(#{kws.join(', ')}) def foo_required_kw#{i}(#{kws.join(', ')})
end end
} }
} }
(1..6).each{|i| (1..6).each{|i|
kws = (1..i).map{|e| "k#{e}: #{e} + 1"} kws = (1..i).map{|e| "k#{e}: #{e} + 1"}
eval %Q{ eval %Q{
def foo_complex_kw#{i}(#{kws.join(', ')}) def foo_complex_kw#{i}(#{kws.join(', ')})
end end
} }
} }
(1..6).each{|i| (1..6).each{|i|
kws = (1..i).map{|e| "k#{e}: #{e}"} kws = (1..i).map{|e| "k#{e}: #{e}"}
eval %Q{ eval %Q{
def iter_kw#{i} def iter_kw#{i}
yield #{kws.join(', ')} yield #{kws.join(', ')}
end end
} }
} }
ary1 = [1] ary1 = [1]
ary2 = [[1, 2, 3, 4, 5]] ary2 = [[1, 2, 3, 4, 5]]
test_methods = %Q{ test_methods = %Q{
# empty 1 # empty 1
# empty 2 # empty 2
foo0 foo0
foo3 1, 2, 3 foo3 1, 2, 3
foo6 1, 2, 3, 4, 5, 6 foo6 1, 2, 3, 4, 5, 6
foo_kw1 foo_kw1
foo_kw2 foo_kw2
foo_kw3 foo_kw3
foo_kw4 foo_kw4
foo_kw5 foo_kw5
foo_kw6 foo_kw6
foo_kw6 k1: 1 foo_kw6 k1: 1
foo_kw6 k1: 1, k2: 2 foo_kw6 k1: 1, k2: 2
foo_kw6 k1: 1, k2: 2, k3: 3 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
foo_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5 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_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5, k6: 6
foo_required_kw1 k1: 1 foo_required_kw1 k1: 1
foo_required_kw2 k1: 1, k2: 2 foo_required_kw2 k1: 1, k2: 2
foo_required_kw3 k1: 1, k2: 2, k3: 3 foo_required_kw3 k1: 1, k2: 2, k3: 3
foo_required_kw4 k1: 1, k2: 2, k3: 3, k4: 4 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_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_required_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5, k6: 6
foo_complex_kw1 foo_complex_kw1
foo_complex_kw2 foo_complex_kw2
foo_complex_kw3 foo_complex_kw3
foo_complex_kw4 foo_complex_kw4
foo_complex_kw5 foo_complex_kw5
foo_complex_kw6 foo_complex_kw6
foo_complex_kw6 k1: 1 foo_complex_kw6 k1: 1
foo_complex_kw6 k1: 1, k2: 2 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
foo_complex_kw6 k1: 1, k2: 2, k3: 3, k4: 4 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
foo_complex_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5, k6: 6 foo_complex_kw6 k1: 1, k2: 2, k3: 3, k4: 4, k5: 5, k6: 6
iter0{} iter0{}
iter1{} iter1{}
iter1{|a|} iter1{|a|}
iter3{} iter3{}
iter3{|a|} iter3{|a|}
iter3{|a, b, c|} iter3{|a, b, c|}
iter6{} iter6{}
iter6{|a|} iter6{|a|}
iter6{|a, b, c, d, e, f, g|} iter6{|a, b, c, d, e, f, g|}
iter0{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|} 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_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_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_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_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_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|} iter_kw6{|k1: nil, k2: nil, k3: nil, k4: nil, k5: nil, k6: nil|}
ary1.each{|e|} ary1.each{|e|}
ary1.each{|e,|} ary1.each{|e,|}
ary1.each{|a, b, c, d, e|} ary1.each{|a, b, c, d, e|}
ary2.each{|e|} ary2.each{|e|}
ary2.each{|e,|} ary2.each{|e,|}
ary2.each{|a, b, c, d, e|} ary2.each{|a, b, c, d, e|}
} }
N = 10_000_000 N = 10_000_000
max_line = test_methods.each_line.max_by{|line| line.strip.size} max_line = test_methods.each_line.max_by{|line| line.strip.size}
max_size = max_line.strip.size max_size = max_line.strip.size
Benchmark.bm(max_size){|x| Benchmark.bm(max_size){|x|
str = test_methods.each_line.map{|line| line.strip! str = test_methods.each_line.map{|line| line.strip!
next if line.empty? next if line.empty?
%Q{ %Q{
x.report(#{line.dump}){ x.report(#{line.dump}){
i = 0 i = 0
while i<#{N} while i<#{N}
#{line} #{line}
i+=1 i+=1
end end
} }
} }
}.join("\n") }.join("\n")
eval str eval str
} }