Memory Management Overhead

Source code: oil/benchmarks/gc.sh

GC Stats

task elapsed ms max gc millis total gc millis allocated MB max rss MB num allocated num gc points num gc done gc threshold num growths max survived shell label
parse.configure-cpython 25 2 6 12.0 17.8 476,694 1,282 6 408,770 5 204,385 osh-native
parse.configure-coreutils 111 19 45 46.1 51.5 1,653,282 4,764 12 1,069,136 6 798,649 osh-native
parse.abuild 6 0 1 2.6 8.5 101,885 180 2 75,112 1 37,556 osh-native
ex.compute-fib 20 0 1 2.6 7.9 584,150 31,810 12 50,000 0 2,832 osh-native
ex.bashcomp-parse-help 124 0 2 10.6 8.8 995,227 27,376 21 50,000 0 3,823 osh-native
ex.abuild-print-help 17 0 1 2.8 9.1 116,294 478 3 85,348 1 42,674 osh-native

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
4 0 4 1.6 dash -
16 16 0 3.2 bash -
76 46 35 3.4 zsh -
11 11 0 28.9 bumpleak/osh mut
14 14 0 29.7 _bin/cxx-opt+bumproot/osh mut
16 16 0 30.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
22 11 11 25.2 osh-native mut+alloc
23 15 8 25.3 osh-native mut+alloc+free
25 18 7 17.8 osh-native mut+alloc+free+gc
26 21 4 17.9 osh-native mut+alloc+free+gc+exit
32 24 8 33.3 _bin/cxx-opt+nopool/osh mut+alloc
35 27 8 22.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

parse.configure-coreutils

Parsing the autoconf-generated configure script from GNU coreutils.

Note that unlike other shells, osh -n retains all nodes on purpose. (See the parser benchmark).

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
15 15 0 1.7 dash -
55 55 0 3.2 bash -
312 166 163 3.6 zsh -
36 16 20 85.9 bumpleak/osh mut
45 37 8 86.1 _bin/cxx-opt+bumproot/osh mut
52 40 12 85.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
73 50 23 73.5 osh-native mut+alloc
82 54 29 75.2 osh-native mut+alloc+free
111 75 35 51.5 osh-native mut+alloc+free+gc
123 98 25 50.5 osh-native mut+alloc+free+gc+exit
106 73 33 99.2 _bin/cxx-opt+nopool/osh mut+alloc
157 134 24 71.8 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

parse.abuild

Parsing abuild from Alpine Linux.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
1 1 0 1.6 dash -
4 0 4 2.9 bash -
5 0 5 3.3 zsh -
4 4 0 11.8 bumpleak/osh mut
5 5 0 11.6 _bin/cxx-opt+bumproot/osh mut
5 5 0 11.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
6 6 0 9.9 osh-native mut+alloc
6 3 3 10.0 osh-native mut+alloc+free
6 3 3 8.5 osh-native mut+alloc+free+gc
6 6 0 8.7 osh-native mut+alloc+free+gc+exit
9 0 8 11.5 _bin/cxx-opt+nopool/osh mut+alloc
8 4 4 9.4 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

ex.compute-fib

A synthetic benchmark for POSIX shell arithmetic.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
7 7 0 1.6 dash -
20 20 0 3.1 bash -
16 8 8 3.5 zsh -
14 14 0 32.2 bumpleak/osh mut
25 21 4 31.5 _bin/cxx-opt+bumproot/osh mut
20 16 4 32.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
27 19 8 26.4 osh-native mut+alloc
28 16 12 26.7 osh-native mut+alloc+free
20 16 4 7.9 osh-native mut+alloc+free+gc
20 16 4 7.9 osh-native mut+alloc+free+gc+exit
40 28 12 35.9 _bin/cxx-opt+nopool/osh mut+alloc
26 23 4 9.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

ex.bashcomp-parse-help

A realistic bash-completion workload.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
50 50 0 3.1 bash -
115 74 41 54.9 bumpleak/osh mut
124 80 44 55.9 _bin/cxx-opt+bumproot/osh mut
135 80 56 56.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
149 86 63 47.0 osh-native mut+alloc
154 99 55 48.9 osh-native mut+alloc+free
124 96 28 8.8 osh-native mut+alloc+free+gc
123 95 28 8.6 osh-native mut+alloc+free+gc+exit
166 85 81 64.1 _bin/cxx-opt+nopool/osh mut+alloc
146 121 24 10.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

ex.abuild-print-help

Running abuild -h from Alpine Linux.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
8 5 3 3.6 dash -
16 15 1 4.6 bash -
13 12 2 3.6 zsh -
16 11 5 12.9 bumpleak/osh mut
15 10 5 12.1 _bin/cxx-opt+bumproot/osh mut
17 7 10 13.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
17 13 4 11.0 osh-native mut+alloc
18 17 1 11.3 osh-native mut+alloc+free
17 15 2 9.1 osh-native mut+alloc+free+gc
17 15 2 9.1 osh-native mut+alloc+free+gc+exit
20 12 8 12.4 _bin/cxx-opt+nopool/osh mut+alloc
19 11 9 10.1 _bin/cxx-opt+nopool/osh mut+alloc+free+gc