aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/external/metalang99/bench
diff options
context:
space:
mode:
author lemon<lsof@mailbox.org>2026-02-23 20:36:05 +0100
committer lemon<lsof@mailbox.org>2026-02-23 20:36:05 +0100
commit052144cabb126efe925a96f8a0597a0f2005d206 (patch)
tree4fd87244b9eef018b30e90fdff24c5b1a145a85e /test/external/metalang99/bench
parent4e9020dfb847d80475415f9f5914efaa50238767 (diff)
add metalang99 testsuite (preprocessor stress testing)
Diffstat (limited to 'test/external/metalang99/bench')
-rw-r--r--test/external/metalang99/bench/100_call.c12
-rw-r--r--test/external/metalang99/bench/100_v.c8
-rw-r--r--test/external/metalang99/bench/README.md3
-rw-r--r--test/external/metalang99/bench/compare_25_items.c6
-rw-r--r--test/external/metalang99/bench/filter_map.c9
-rw-r--r--test/external/metalang99/bench/list_of_63_items.c8
-rw-r--r--test/external/metalang99/bench/many_call_in_arg_pos.c10
7 files changed, 56 insertions, 0 deletions
diff --git a/test/external/metalang99/bench/100_call.c b/test/external/metalang99/bench/100_call.c
new file mode 100644
index 0000000..e4b1981
--- /dev/null
+++ b/test/external/metalang99/bench/100_call.c
@@ -0,0 +1,12 @@
+#include <metalang99.h>
+
+#define F_IMPL(x, y, z) v(x + y + z)
+
+#define _5 \
+ ML99_call(F, v(1), v(2), v(3)), ML99_call(F, v(1), v(2), v(3)), \
+ ML99_call(F, v(1), v(2), v(3)), ML99_call(F, v(1), v(2), v(3)), \
+ ML99_call(F, v(1), v(2), v(3))
+#define _10 _5, _5
+#define _100 _10, _10, _10, _10, _10, _10, _10, _10, _10, _10
+
+ML99_EVAL(_100)
diff --git a/test/external/metalang99/bench/100_v.c b/test/external/metalang99/bench/100_v.c
new file mode 100644
index 0000000..d97c3ed
--- /dev/null
+++ b/test/external/metalang99/bench/100_v.c
@@ -0,0 +1,8 @@
+#include <metalang99.h>
+
+#define _10 \
+ v(~~~~~~~~~~), v(~~~~~~~~~~), v(~~~~~~~~~~), v(~~~~~~~~~~), v(~~~~~~~~~~), v(~~~~~~~~~~), \
+ v(~~~~~~~~~~), v(~~~~~~~~~~), v(~~~~~~~~~~), v(~~~~~~~~~~)
+#define _100 _10, _10, _10, _10, _10, _10, _10, _10, _10, _10
+
+ML99_EVAL(_100)
diff --git a/test/external/metalang99/bench/README.md b/test/external/metalang99/bench/README.md
new file mode 100644
index 0000000..f8cb95e
--- /dev/null
+++ b/test/external/metalang99/bench/README.md
@@ -0,0 +1,3 @@
+# Benchmarking
+
+Execute `./scripts/bench.sh` from the root directory to run the benchmarks.
diff --git a/test/external/metalang99/bench/compare_25_items.c b/test/external/metalang99/bench/compare_25_items.c
new file mode 100644
index 0000000..5a166f9
--- /dev/null
+++ b/test/external/metalang99/bench/compare_25_items.c
@@ -0,0 +1,6 @@
+#include <metalang99.h>
+
+#define NUMBERS \
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
+
+ML99_ASSERT(ML99_listEq(v(ML99_natEq), ML99_list(v(NUMBERS)), ML99_list(v(NUMBERS))));
diff --git a/test/external/metalang99/bench/filter_map.c b/test/external/metalang99/bench/filter_map.c
new file mode 100644
index 0000000..8aeb211
--- /dev/null
+++ b/test/external/metalang99/bench/filter_map.c
@@ -0,0 +1,9 @@
+#include <metalang99.h>
+
+#define _10 5, 5, 5, 5, 5, 3, 3, 3, 3, 3
+#define _50 _10, _10, _10, _10, _10
+
+#define F_IMPL(x) ML99_if(ML99_natEq(v(x), v(5)), ML99_just(v(x)), ML99_nothing())
+#define F_ARITY 1
+
+ML99_LIST_EVAL(ML99_listFilterMap(v(F), ML99_list(v(_50, _10, 3, 3, 3))))
diff --git a/test/external/metalang99/bench/list_of_63_items.c b/test/external/metalang99/bench/list_of_63_items.c
new file mode 100644
index 0000000..8ee1f5c
--- /dev/null
+++ b/test/external/metalang99/bench/list_of_63_items.c
@@ -0,0 +1,8 @@
+#include <metalang99.h>
+
+#define NUMBERS \
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, \
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, \
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
+
+ML99_EVAL(ML99_list(v(NUMBERS)))
diff --git a/test/external/metalang99/bench/many_call_in_arg_pos.c b/test/external/metalang99/bench/many_call_in_arg_pos.c
new file mode 100644
index 0000000..712738f
--- /dev/null
+++ b/test/external/metalang99/bench/many_call_in_arg_pos.c
@@ -0,0 +1,10 @@
+#include <metalang99.h>
+
+#define F_IMPL(x) v(x)
+
+#define CALL ML99_call(F, ML99_call(F, ML99_call(F, v(~~~~~))))
+#define _5 CALL, CALL, CALL, CALL, CALL
+#define _10 _5, _5
+#define _100 _10, _10, _10, _10, _10, _10, _10, _10, _10, _10
+
+ML99_EVAL(_100)