diff options
Diffstat (limited to 'benchmark/so_object.yml')
-rw-r--r-- | benchmark/so_object.yml | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/benchmark/so_object.yml b/benchmark/so_object.yml new file mode 100644 index 0000000000..89fbce83cd --- /dev/null +++ b/benchmark/so_object.yml @@ -0,0 +1,59 @@ +prelude: | + #!/usr/bin/ruby + # -*- mode: ruby -*- + # $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $ + # http://www.bagley.org/~doug/shootout/ + # with help from Aristarkh Zagorodnikov +benchmark: + so_object: | + + class Toggle + def initialize(start_state) + @bool = start_state + end + + def value + @bool + end + + def activate + @bool = !@bool + self + end + end + + class NthToggle < Toggle + def initialize(start_state, max_counter) + super start_state + @count_max = max_counter + @counter = 0 + end + + def activate + @counter += 1 + if @counter >= @count_max + @bool = !@bool + @counter = 0 + end + self + end + end + + n = 1500000 # (ARGV.shift || 1).to_i + + toggle = Toggle.new 1 + 5.times do + toggle.activate.value ? 'true' : 'false' + end + n.times do + toggle = Toggle.new 1 + end + + ntoggle = NthToggle.new 1, 3 + 8.times do + ntoggle.activate.value ? 'true' : 'false' + end + n.times do + ntoggle = NthToggle.new 1, 3 + end +loop_count: 1 |