1
0
forked from Mirror/wren
Files
wren/benchmark/method_call.rb
2013-12-07 18:43:39 -08:00

62 lines
1.1 KiB
Ruby

#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: methcall.ruby,v 1.1 2004-05-19 18:10:41 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
# with help from Aristarkh Zagorodnikov
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
def main()
start = Time.now
n = 1000000
val = 1
toggle = Toggle.new(val)
n.times do
val = toggle.activate().value()
end
if val then puts "true" else puts "false" end
val = 1
ntoggle = NthToggle.new(val, 3)
n.times do
val = ntoggle.activate().value()
end
if val then puts "true" else puts "false" end
puts "elapsed: " + (Time.now - start).to_s
end
main()