diff options
Diffstat (limited to 'progs/bench')
| -rw-r--r-- | progs/bench/fib.sy | 10 | ||||
| -rw-r--r-- | progs/bench/fib_iter.sy | 14 | ||||
| -rw-r--r-- | progs/bench/sum.sy | 6 |
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 |
