Files
wren/benchmark/method_call.wren
Bob Nystrom da4cadf16b Unify body handling.
Blocks, functions, and methods now have the same code for handling
their bodies.

This means that single-line methods work like single-line functions:
they return the result of their expression.
2014-04-03 07:48:19 -07:00

70 lines
1.3 KiB
Plaintext

class Toggle {
new(startState) {
_state = startState
}
value { _state }
activate {
_state = !_state
return this
}
}
class NthToggle is Toggle {
new(startState, maxCounter) {
super(startState)
_countMax = maxCounter
_count = 0
}
activate {
_count = _count + 1
if (_count >= _countMax) {
super.activate
_count = 0
}
return this
}
}
var start = IO.clock
var n = 100000
var val = true
var toggle = new Toggle(val)
for (i in 0...n) {
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
val = toggle.activate.value
}
IO.print(toggle.value)
val = true
var ntoggle = new NthToggle(val, 3)
for (i in 0...n) {
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
val = ntoggle.activate.value
}
IO.print(ntoggle.value)
IO.print("elapsed: " + (IO.clock - start).toString)