Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env ruby -wKU

require "benchmark"

class Whatever
  define_method(:slow) { }
  
  class_eval <<-END_RUBY
    def fast
      
    end
  END_RUBY
end

OBJ   = Whatever.new
TESTS = 1_000_000
Benchmark.bmbm do |results|
  results.report("define_method:") { TESTS.times { OBJ.slow } }
  results.report("class_eval:")    { TESTS.times { OBJ.fast } }
end
# >> Rehearsal --------------------------------------------------
# >> define_method:   1.770000   0.590000   2.360000 (  2.362650)
# >> class_eval:      1.260000   0.570000   1.830000 (  1.830873)
# >> ----------------------------------------- total: 4.190000sec
# >> 
# >>                      user     system      total        real
# >> define_method:   1.800000   0.600000   2.400000 (  2.394224)
# >> class_eval:      1.290000   0.570000   1.860000 (  1.858711)