aboutsummaryrefslogtreecommitdiff
path: root/tests/bench
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bench')
-rw-r--r--tests/bench/bench_bytes.sh2
-rw-r--r--tests/bench/bench_share.sh2
-rw-r--r--tests/bench/bench_strings.sh2
-rw-r--r--tests/bench/rss/a0.zc11
-rw-r--r--tests/bench/rss/a10.zc11
-rw-r--r--tests/bench/rss/a100.zc11
-rw-r--r--tests/bench/rss/measure.py13
7 files changed, 49 insertions, 3 deletions
diff --git a/tests/bench/bench_bytes.sh b/tests/bench/bench_bytes.sh
index 775b71d..c509da4 100644
--- a/tests/bench/bench_bytes.sh
+++ b/tests/bench/bench_bytes.sh
@@ -10,7 +10,7 @@ T=$(mktemp -d)
trap 'rm -rf "$T"' EXIT
$CC -O2 -w src/tools/genmap.c -o "$T/genmap" || exit 1
GENMAP="$T/genmap" bash src/tools/automap.sh run "$T/run" src/runtime/run.zc tests/programs/bench_bytes.zc >/dev/null || exit 1
-cp src/micro/micro.c src/micro/micro_port.h src/micro/port_linux.c src/core/core.c src/core/io_linux.c src/core/fops.h src/core/bops.h src/core/stack.h src/core/genome.h "$T/run/"
+cp src/micro/micro.c src/micro/micro_port.h src/micro/port_linux.c src/core/core.c src/core/io_linux.c src/core/fops.h src/core/bops.h src/core/stack.h src/core/hold.h src/core/genome.h "$T/run/"
$CC -O2 -w -DJTYPE=int "$T/run/core.c" "$T/run/io_linux.c" -o "$T/zy" || exit 1
$CC -O2 -w "$T/run/micro.c" "$T/run/port_linux.c" -o "$T/zym" || exit 1
vms=("$T/zy" "$T/zym"); names=("interp" "micro")
diff --git a/tests/bench/bench_share.sh b/tests/bench/bench_share.sh
index 5cb1bfd..c47f5f5 100644
--- a/tests/bench/bench_share.sh
+++ b/tests/bench/bench_share.sh
@@ -8,7 +8,7 @@ T=$(mktemp -d)
trap 'rm -rf "$T"' EXIT
$CC -O2 -w src/tools/genmap.c -o "$T/genmap" || exit 1
"$T/genmap" --preset run -o "$T/run" >/dev/null || exit 1
-cp src/tools/zc0.c src/micro/micro.c src/micro/micro_port.h src/micro/port_linux.c src/core/core.c src/core/io_linux.c src/core/fops.h src/core/bops.h src/core/stack.h src/core/genome.h "$T/run/"
+cp src/tools/zc0.c src/micro/micro.c src/micro/micro_port.h src/micro/port_linux.c src/core/core.c src/core/io_linux.c src/core/fops.h src/core/bops.h src/core/stack.h src/core/hold.h src/core/genome.h "$T/run/"
$CC -O1 -w "$T/run/zc0.c" -o "$T/zc0" || exit 1
cat "$T/run/rt.zc" src/core/core.zc src/runtime/run.zc tests/programs/bench_share.zc | "$T/zc0" > "$T/run/genome.bin" || exit 1
$CC -O2 -w -DJTYPE=int "$T/run/core.c" "$T/run/io_linux.c" -o "$T/zy" || exit 1
diff --git a/tests/bench/bench_strings.sh b/tests/bench/bench_strings.sh
index b14bf57..8bf3b77 100644
--- a/tests/bench/bench_strings.sh
+++ b/tests/bench/bench_strings.sh
@@ -8,7 +8,7 @@ T=$(mktemp -d)
trap 'rm -rf "$T"' EXIT
$CC -O2 -w src/tools/genmap.c -o "$T/genmap" || exit 1
"$T/genmap" --preset run -o "$T/run" >/dev/null || exit 1
-cp src/tools/zc0.c src/micro/micro.c src/micro/micro_port.h src/micro/port_linux.c src/core/core.c src/core/io_linux.c src/core/fops.h src/core/bops.h src/core/stack.h src/core/genome.h "$T/run/"
+cp src/tools/zc0.c src/micro/micro.c src/micro/micro_port.h src/micro/port_linux.c src/core/core.c src/core/io_linux.c src/core/fops.h src/core/bops.h src/core/stack.h src/core/hold.h src/core/genome.h "$T/run/"
$CC -O1 -w "$T/run/zc0.c" -o "$T/zc0" || exit 1
cat "$T/run/rt.zc" src/core/core.zc src/runtime/run.zc tests/programs/bench_strings.zc | "$T/zc0" > "$T/run/genome.bin" || exit 1
$CC -O2 -w -DJTYPE=int "$T/run/core.c" "$T/run/io_linux.c" -o "$T/zy" || exit 1
diff --git a/tests/bench/rss/a0.zc b/tests/bench/rss/a0.zc
new file mode 100644
index 0000000..b8555d0
--- /dev/null
+++ b/tests/bench/rss/a0.zc
@@ -0,0 +1,11 @@
+namespace;
+include rt, actor;
+typecheck on;
+int work(int n) { rt.syscall(48, 500, 0, 0); return n + 1; }
+fn main() {
+ let n = 0, i = 0, sum = 0;
+ actor.Actor<int, int>*[101] as;
+ while (i < n) { as[i] = rt.new(actor.Actor<int, int>); as[i].spawn(work); as[i].recv(fn(int v) { sum = sum + v; return 0; }); as[i].send(i); i++; }
+ i = 0; while (i < n) { as[i].await(); as[i].close(); i++; }
+ rt.put_n(sum); rt.put_c(10); return 0;
+}
diff --git a/tests/bench/rss/a10.zc b/tests/bench/rss/a10.zc
new file mode 100644
index 0000000..aa09ce1
--- /dev/null
+++ b/tests/bench/rss/a10.zc
@@ -0,0 +1,11 @@
+namespace;
+include rt, actor;
+typecheck on;
+int work(int n) { rt.syscall(48, 500, 0, 0); return n + 1; }
+fn main() {
+ let n = 10, i = 0, sum = 0;
+ actor.Actor<int, int>*[101] as;
+ while (i < n) { as[i] = rt.new(actor.Actor<int, int>); as[i].spawn(work); as[i].recv(fn(int v) { sum = sum + v; return 0; }); as[i].send(i); i++; }
+ i = 0; while (i < n) { as[i].await(); as[i].close(); i++; }
+ rt.put_n(sum); rt.put_c(10); return 0;
+}
diff --git a/tests/bench/rss/a100.zc b/tests/bench/rss/a100.zc
new file mode 100644
index 0000000..f869026
--- /dev/null
+++ b/tests/bench/rss/a100.zc
@@ -0,0 +1,11 @@
+namespace;
+include rt, actor;
+typecheck on;
+int work(int n) { rt.syscall(48, 500, 0, 0); return n + 1; }
+fn main() {
+ let n = 100, i = 0, sum = 0;
+ actor.Actor<int, int>*[101] as;
+ while (i < n) { as[i] = rt.new(actor.Actor<int, int>); as[i].spawn(work); as[i].recv(fn(int v) { sum = sum + v; return 0; }); as[i].send(i); i++; }
+ i = 0; while (i < n) { as[i].await(); as[i].close(); i++; }
+ rt.put_n(sum); rt.put_c(10); return 0;
+}
diff --git a/tests/bench/rss/measure.py b/tests/bench/rss/measure.py
new file mode 100644
index 0000000..b4ad889
--- /dev/null
+++ b/tests/bench/rss/measure.py
@@ -0,0 +1,13 @@
+import sys,subprocess,resource,os
+repo=sys.argv[1]
+for b in ['zy','zyi','zym']:
+ row=[b]
+ for n in [0,10,100]:
+ pid=os.fork()
+ if pid==0:
+ fd=os.open(os.path.dirname(os.path.abspath(__file__))+f'/a{n}.zc',os.O_RDONLY); os.dup2(fd,0)
+ nul=os.open('/dev/null',os.O_WRONLY); os.dup2(nul,1)
+ os.chdir(repo); os.execv(f'{repo}/build/bin/{b}',[b])
+ _,st,ru=os.wait4(pid,0)
+ row.append(f'{ru.ru_maxrss/1024:.1f}' + ('' if st==0 else f'(st{st})'))
+ print(' '.join(row))