Add a super benchmark.
[jruby.git] / bench / language / bench_super.rb
blob8ba3deddcf627a9449e5ad8501dd4657390b71d2
1 require 'benchmark'
3 class A
4   def foo0; end
5   alias foo0a foo0
6   alias foo0b foo0
7   def foo1(a); end
8   def foo4(a,b,c,d); end
9 end
11 class B < A
12   def foo0a; super;end
13   def foo0b; super();end
14   def foo1(a); super(a); end
15   def foo4(a,b,c,d); super(a,b,c,d); end
16 end
18 TIMES = (ARGV[0] || 5).to_i
19 Benchmark.bm(40) do |bm|
20   TIMES.times do
21     a = A.new
22     b = B.new
23     bm.report("control foo()") do
24       1_000_000.times { a.foo0 }
25     end
26     bm.report("control foo(1)") do
27       1_000_000.times { a.foo1(1) }
28     end
29     bm.report("control foo(1,2,3,4)") do
30       1_000_000.times { a.foo4(1,2,3,4) }
31     end
32     bm.report("super foo") do
33       1_000_000.times { b.foo0a }
34     end
35     bm.report("super foo()") do
36       1_000_000.times { b.foo0b }
37     end
38     bm.report("super foo(1)") do
39       1_000_000.times { b.foo1(1) }
40     end
41     bm.report("super foo(1,2,3,4)") do
42       1_000_000.times { b.foo4(1,2,3,4) }
43     end
44   end
45 end