diff options
Diffstat (limited to 'tests/bench')
| -rw-r--r-- | tests/bench/bench_bytes.sh | 2 | ||||
| -rw-r--r-- | tests/bench/bench_share.sh | 2 | ||||
| -rw-r--r-- | tests/bench/bench_strings.sh | 2 | ||||
| -rw-r--r-- | tests/bench/rss/a0.zc | 11 | ||||
| -rw-r--r-- | tests/bench/rss/a10.zc | 11 | ||||
| -rw-r--r-- | tests/bench/rss/a100.zc | 11 | ||||
| -rw-r--r-- | tests/bench/rss/measure.py | 13 |
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)) |
