diff options
| author | 2026-02-23 20:36:05 +0100 | |
|---|---|---|
| committer | 2026-02-23 20:36:05 +0100 | |
| commit | 052144cabb126efe925a96f8a0597a0f2005d206 (patch) | |
| tree | 4fd87244b9eef018b30e90fdff24c5b1a145a85e /test/external/metalang99/bench | |
| parent | 4e9020dfb847d80475415f9f5914efaa50238767 (diff) | |
add metalang99 testsuite (preprocessor stress testing)
Diffstat (limited to 'test/external/metalang99/bench')
| -rw-r--r-- | test/external/metalang99/bench/100_call.c | 12 | ||||
| -rw-r--r-- | test/external/metalang99/bench/100_v.c | 8 | ||||
| -rw-r--r-- | test/external/metalang99/bench/README.md | 3 | ||||
| -rw-r--r-- | test/external/metalang99/bench/compare_25_items.c | 6 | ||||
| -rw-r--r-- | test/external/metalang99/bench/filter_map.c | 9 | ||||
| -rw-r--r-- | test/external/metalang99/bench/list_of_63_items.c | 8 | ||||
| -rw-r--r-- | test/external/metalang99/bench/many_call_in_arg_pos.c | 10 |
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) |