From 2ed624341bcfa7d670bc4ccdf3417c0b55d8539c Mon Sep 17 00:00:00 2001 From: Ellie Date: Mon, 15 Feb 2021 00:28:25 +0100 Subject: [PATCH] Add Horse64 version of the method call benchmark --- src/method-call.h64 | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/method-call.h64 diff --git a/src/method-call.h64 b/src/method-call.h64 new file mode 100644 index 0000000..0f8672a --- /dev/null +++ b/src/method-call.h64 @@ -0,0 +1,71 @@ + +class Toggle { + var state protect = no + + func init(start_state=no) { + self.state = (start_state == yes) + } + + func activate { + self.state = not self.state + } +} + +class NthToggle { + var num_state protect = 0 + var max_value = 0 + var toggle = new Toggle() + var state protect = no + var counter = 0 + + func init(max_value, start_state=no) { + self.max_value = (0 + max_value) + self.state = no + if start_state { + self.state = yes + self.toggle.activate() + } + } + + func activate { + self.counter += 1 + if self.counter >= self.max_value { + self.toggle.activate() + self.state = self.toggle.state + self.counter = 0 + } + } +} + +func main { + var N = 100000 + + var val = yes + var toggle = new Toggle(start_state=val) + var i = 1 + while i <= N { + var i2 = 1 + while i2 <= 10 { + toggle.activate() + val = toggle.state + i2 += 1 + } + i += 1 + } + print(val) + + val = yes + var ntoggle = new NthToggle(3, start_state=val) + i = 1 + while i <= N { + var i2 = 1 + while i2 <= 10 { + ntoggle.activate() + val = ntoggle.state + i2 += 1 + } + i += 1 + } + print(val) +} +