Fix up Rubinius specific library specs.
[rbx.git] / benchmark / yarv / bm_so_object.rb
blobe8607c7199ef45f5894686de6490c95ebba89106
1 #!/usr/bin/ruby
2 # -*- mode: ruby -*-
3 # $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
4 # http://www.bagley.org/~doug/shootout/
5 # with help from Aristarkh Zagorodnikov
7 class Toggle
8     def initialize(start_state)
9         @bool = start_state
10     end
12     def value
13         @bool
14     end
16     def activate
17         @bool = !@bool
18         self
19     end
20 end
22 class NthToggle < Toggle
23     def initialize(start_state, max_counter)
24         super start_state
25         @count_max = max_counter
26         @counter = 0
27     end
29     def activate
30         @counter += 1
31         if @counter >= @count_max
32             @bool = !@bool
33             @counter = 0
34         end
35         self
36     end
37 end
39 n = 1500000 # (ARGV.shift || 1).to_i
41 toggle = Toggle.new 1
42 5.times do
43     toggle.activate.value ? 'true' : 'false'
44 end
45 n.times do
46     toggle = Toggle.new 1
47 end
49 ntoggle = NthToggle.new 1, 3
50 8.times do
51     ntoggle.activate.value ? 'true' : 'false'
52 end
53 n.times do
54     ntoggle = NthToggle.new 1, 3
55 end