aboutsummaryrefslogtreecommitdiffstats
path: root/progs/bench
diff options
context:
space:
mode:
Diffstat (limited to 'progs/bench')
-rw-r--r--progs/bench/fib.sy10
-rw-r--r--progs/bench/fib_iter.sy14
-rw-r--r--progs/bench/sum.sy6
3 files changed, 30 insertions, 0 deletions
diff --git a/progs/bench/fib.sy b/progs/bench/fib.sy
new file mode 100644
index 0000000..de68f5c
--- /dev/null
+++ b/progs/bench/fib.sy
@@ -0,0 +1,10 @@
+// The worst implementation of Fibonacci calculations
+// possible. FYI, it can be done in constant time.
+fib :: fn a:int -> int {
+ if a < 2 {
+ ret a
+ }
+ ret fib(a - 1) + fib(a - 2)
+}
+// 23 is around where things start getting slow.
+fib(23) <=> 28657
diff --git a/progs/bench/fib_iter.sy b/progs/bench/fib_iter.sy
new file mode 100644
index 0000000..c51469a
--- /dev/null
+++ b/progs/bench/fib_iter.sy
@@ -0,0 +1,14 @@
+// A Fibonacci implementation that is a little
+// less awful. But we run it 1000 times instead.
+j := 0
+for , j < 1000, j = j + 1 {
+ a := 0
+ b := 1
+
+ for i := 0, i < 50, i = i + 1 {
+ c := a
+ a = b
+ b = c + b
+ }
+ a <=> 12586269025
+}
diff --git a/progs/bench/sum.sy b/progs/bench/sum.sy
new file mode 100644
index 0000000..bb6870f
--- /dev/null
+++ b/progs/bench/sum.sy
@@ -0,0 +1,6 @@
+// Adds the numbers 0 to 10000
+sum := 0
+for i := 0, i <= 100000, i += 1 {
+ sum += i
+}
+sum <=> 5000050000