aboutsummaryrefslogtreecommitdiffstats
path: root/sample
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-02 17:36:51 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-02 17:36:51 +0000
commit16377c36b9ca280407d80948fbc904ed15179441 (patch)
treec1ef179275a2a43184d1a01cb9ac35f25eaa8d66 /sample
parent1d4e282d7558190098dd952d81519d9263df86d5 (diff)
downloadruby-16377c36b9ca280407d80948fbc904ed15179441.tar.gz
* 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
Diffstat (limited to 'sample')
-rw-r--r--sample/simple-bench.rb140
1 files changed, 140 insertions, 0 deletions
diff --git a/sample/simple-bench.rb b/sample/simple-bench.rb
new file mode 100644
index 0000000000..f3a5380b1d
--- /dev/null
+++ b/sample/simple-bench.rb
@@ -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
+}