jameskilton (owner)

Revisions

gist: 83757 Download_button fork
public
Public Clone URL: git://gist.github.com/83757.git
Embed All Files: show embed
Ruby #
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require 'benchmark'
require 'rubygems'
require 'publisher'
 
COUNT = 10_000_000
 
class Eventer
  extend Publisher
 
  def initialize
    @ev_one_count = 0
  end
 
  has_events :ev_one
 
  def ev_one
    @ev_one_count += 1
  end
 
end
 
class Firer
  extend Publisher
  can_fire :ev_one
 
  def run_test
    COUNT.times { fire :ev_one }
  end
end
 
class Caller
  def initialize(eventer)
    @eventer = eventer
  end
 
  def run_test
    COUNT.times { @eventer.ev_one }
  end
end
 
Benchmark.bm(20) do |x|
  x.report("Publisher events") { f = Firer.new; ev = Eventer.new; f.run_test }
  x.report("Calling straight") { ev = Eventer.new; c = Caller.new(ev); c.run_test }
end
Bash #
1
2
3
4
5
6
7
8
9
10
11
12
13
roelofs@trillian ~/tmp $ ruby publisher_test.rb
                          user system total real
Publisher events 36.870000 0.010000 36.880000 ( 37.352613)
Calling straight 6.740000 0.000000 6.740000 ( 6.835743)
 
roelofs@trillian ~/tmp $ ruby19 -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
 
roelofs@trillian ~/tmp $ ruby19 publisher_test.rb
                          user system total real
Publisher events 13.720000 0.080000 13.800000 ( 15.669221)
Calling straight 3.100000 0.020000 3.120000 ( 3.532273)