diff --git a/performance/Makefile b/performance/Makefile new file mode 100644 index 000000000..3848042f8 --- /dev/null +++ b/performance/Makefile @@ -0,0 +1,14 @@ +TESTS=$(sort $(basename $(wildcard *.lama))) + +LAMAC=../src/lamac + +.PHONY: check $(TESTS) + +check: $(TESTS) + +$(TESTS): %: %.lama + @echo $@ + LAMA=../runtime $(LAMAC) $< && `which time` -f "$@\t%U" ./$@ + +clean: + $(RM) test*.log *.s *~ $(TESTS) *.i diff --git a/performance/Sort.lama b/performance/Sort.lama new file mode 100644 index 000000000..3152c5d3d --- /dev/null +++ b/performance/Sort.lama @@ -0,0 +1,27 @@ +fun bubbleSort (l) { + fun inner (l) { + case l of + x : z@(y : tl) -> + if compare (x, y) > 0 + then [true, y : inner (x : tl) [1]] + else case inner (z) of [f, z] -> [f, x : z] esac + fi + | _ -> [false, l] + esac + } + + fun rec (l) { + case inner (l) of + [true , l] -> rec (l) + | [false, l] -> l + esac + } + + rec (l) +} + +fun generate (n) { + if n then n : generate (n-1) else {} fi +} + +bubbleSort (generate (1000)) \ No newline at end of file