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 26 2 7 12.0 17.9 476,754 1,282 6 406,328 5 203,164 osh-native
parse.configure-cpython 24 2 6 12.0 17.5 476,754 1,282 6 406,198 5 203,099 osh-native-souffle
parse.configure-coreutils 111 19 46 44.5 49.9 1,653,342 4,764 12 1,025,524 6 764,305 osh-native
parse.configure-coreutils 103 20 44 45.9 51.1 1,653,341 4,764 12 1,063,854 6 792,365 osh-native-souffle
parse.abuild 6 0 1 2.6 8.7 101,945 180 2 75,028 1 37,514 osh-native
parse.abuild 6 0 1 2.4 8.1 101,945 180 3 87,090 1 43,545 osh-native-souffle
ex.compute-fib 19 0 1 2.1 8.1 579,612 22,608 12 50,000 0 2,918 osh-native
ex.compute-fib 15 0 1 2.1 7.8 579,612 22,608 12 50,000 0 2,857 osh-native-souffle
ex.bashcomp-parse-help 127 0 2 10.3 8.9 995,291 15,258 21 50,000 0 3,900 osh-native
ex.bashcomp-parse-help 121 0 2 10.3 8.4 995,290 15,258 21 50,000 0 3,843 osh-native-souffle
ex.abuild-print-help 24 1 2 2.8 9.2 116,321 277 3 85,246 1 42,623 osh-native
ex.abuild-print-help 23 0 1 2.8 8.8 116,321 277 3 85,122 1 42,561 osh-native-souffle

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
4 4 0 1.7 dash -
16 16 0 3.1 bash -
115 76 45 3.5 zsh -
12 8 4 29.0 bumpleak/osh mut
14 14 0 29.2 _bin/cxx-opt+bumproot/osh mut
17 7 10 30.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
22 9 13 25.3 osh-native mut+alloc
23 16 8 25.6 osh-native mut+alloc+free
26 22 4 17.9 osh-native mut+alloc+free+gc
27 19 8 18.0 osh-native mut+alloc+free+gc+exit
33 20 12 32.1 _bin/cxx-opt+nopool/osh mut+alloc
36 28 8 22.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
20 12 8 24.8 osh-native-souffle mut+alloc
22 7 15 25.2 osh-native-souffle mut+alloc+free
24 20 4 17.5 osh-native-souffle mut+alloc+free+gc
24 16 8 17.7 osh-native-souffle mut+alloc+free+gc+exit

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.4 bash -
305 179 143 3.5 zsh -
36 36 0 85.2 bumpleak/osh mut
45 41 4 85.5 _bin/cxx-opt+bumproot/osh mut
53 26 26 85.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
73 45 28 73.6 osh-native mut+alloc
82 49 33 75.4 osh-native mut+alloc+free
111 74 37 49.9 osh-native mut+alloc+free+gc
114 94 20 50.4 osh-native mut+alloc+free+gc+exit
108 76 32 99.3 _bin/cxx-opt+nopool/osh mut+alloc
160 140 20 67.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
68 28 40 73.2 osh-native-souffle mut+alloc
78 31 47 75.1 osh-native-souffle mut+alloc+free
103 91 12 51.1 osh-native-souffle mut+alloc+free+gc
106 87 20 50.0 osh-native-souffle mut+alloc+free+gc+exit

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.7 dash -
4 4 0 3.1 bash -
6 0 5 3.5 zsh -
4 4 0 12.0 bumpleak/osh mut
5 5 0 11.5 _bin/cxx-opt+bumproot/osh mut
5 2 2 11.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
6 6 0 10.1 osh-native mut+alloc
6 3 3 10.2 osh-native mut+alloc+free
6 3 3 8.7 osh-native mut+alloc+free+gc
6 6 0 8.7 osh-native mut+alloc+free+gc+exit
9 9 0 11.4 _bin/cxx-opt+nopool/osh mut+alloc
8 4 4 9.6 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
6 6 0 9.9 osh-native-souffle mut+alloc
6 6 0 9.8 osh-native-souffle mut+alloc+free
6 6 0 8.1 osh-native-souffle mut+alloc+free+gc
6 6 0 8.0 osh-native-souffle mut+alloc+free+gc+exit

ex.compute-fib

A synthetic benchmark for POSIX shell arithmetic.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
8 7 0 1.6 dash -
20 16 4 3.0 bash -
17 17 0 3.4 zsh -
15 14 0 31.6 bumpleak/osh mut
20 16 4 33.1 _bin/cxx-opt+bumproot/osh mut
20 12 8 32.7 _bin/cxx-opt+bumpsmall/osh mut+alloc
27 15 11 26.0 osh-native mut+alloc
28 16 12 26.2 osh-native mut+alloc+free
19 19 0 8.1 osh-native mut+alloc+free+gc
19 19 0 8.1 osh-native mut+alloc+free+gc+exit
41 24 16 36.1 _bin/cxx-opt+nopool/osh mut+alloc
26 26 0 9.6 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
22 13 9 25.6 osh-native-souffle mut+alloc
23 12 12 25.9 osh-native-souffle mut+alloc+free
15 15 0 7.8 osh-native-souffle mut+alloc+free+gc
15 11 4 7.7 osh-native-souffle mut+alloc+free+gc+exit

ex.bashcomp-parse-help

A realistic bash-completion workload.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
51 51 0 3.3 bash -
116 72 44 55.5 bumpleak/osh mut
127 91 36 54.4 _bin/cxx-opt+bumproot/osh mut
136 74 62 55.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
150 91 59 47.0 osh-native mut+alloc
156 96 60 48.8 osh-native mut+alloc+free
127 99 28 8.9 osh-native mut+alloc+free+gc
127 87 40 8.9 osh-native mut+alloc+free+gc+exit
166 130 35 63.1 _bin/cxx-opt+nopool/osh mut+alloc
147 115 32 10.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
144 100 44 46.6 osh-native-souffle mut+alloc
150 91 59 48.4 osh-native-souffle mut+alloc+free
121 82 39 8.4 osh-native-souffle mut+alloc+free+gc
120 84 36 8.4 osh-native-souffle mut+alloc+free+gc+exit

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 4 4 3.5 dash -
17 16 2 4.6 bash -
14 5 9 3.7 zsh -
19 16 3 12.0 bumpleak/osh mut
23 19 5 12.6 _bin/cxx-opt+bumproot/osh mut
24 19 6 13.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
23 15 9 11.2 osh-native mut+alloc
25 8 17 11.3 osh-native mut+alloc+free
24 16 8 9.2 osh-native mut+alloc+free+gc
25 22 3 9.2 osh-native mut+alloc+free+gc+exit
27 12 15 12.6 _bin/cxx-opt+nopool/osh mut+alloc
26 23 4 10.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
23 12 10 10.7 osh-native-souffle mut+alloc
23 13 11 10.9 osh-native-souffle mut+alloc+free
23 14 9 8.8 osh-native-souffle mut+alloc+free+gc
23 17 6 8.8 osh-native-souffle mut+alloc+free+gc+exit