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 48 6 15 12.0 17.7 476,753 1,282 6 406,608 5 203,304 osh-native
parse.configure-cpython 40 7 15 12.0 17.6 476,753 1,282 6 406,204 5 203,102 osh-native-souffle
parse.configure-coreutils 186 29 96 44.5 49.7 1,653,341 4,764 12 1,025,530 6 764,308 osh-native
parse.configure-coreutils 178 28 94 44.5 49.4 1,653,340 4,764 12 1,025,400 6 764,243 osh-native-souffle
parse.abuild 15 1 1 2.6 8.7 101,944 180 2 75,034 1 37,517 osh-native
parse.abuild 10 1 2 2.4 7.9 101,944 180 3 87,096 1 43,548 osh-native-souffle
ex.compute-fib 33 0 2 2.1 7.9 579,608 22,608 12 50,000 0 2,921 osh-native
ex.compute-fib 23 0 1 2.1 7.6 579,608 22,608 12 50,000 0 2,860 osh-native-souffle
ex.bashcomp-parse-help 195 0 6 10.3 8.8 995,290 15,258 21 50,000 0 3,903 osh-native
ex.bashcomp-parse-help 185 0 5 10.3 8.3 995,289 15,258 21 50,000 0 3,846 osh-native-souffle
ex.abuild-print-help 25 1 2 2.8 9.0 116,320 277 3 85,252 1 42,626 osh-native
ex.abuild-print-help 27 1 2 2.8 8.5 116,320 277 3 85,128 1 42,564 osh-native-souffle

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
7 3 3 1.4 dash -
24 20 4 3.1 bash -
187 92 94 3.4 zsh -
17 3 14 28.3 bumpleak/osh mut
26 13 13 28.9 _bin/cxx-opt+bumproot/osh mut
23 11 11 29.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
29 18 11 25.2 osh-native mut+alloc
36 23 12 25.6 osh-native mut+alloc+free
48 40 8 17.7 osh-native mut+alloc+free+gc
44 36 8 18.0 osh-native mut+alloc+free+gc+exit
46 34 11 33.3 _bin/cxx-opt+nopool/osh mut+alloc
51 39 12 22.3 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
28 8 20 24.6 osh-native-souffle mut+alloc
31 8 23 25.3 osh-native-souffle mut+alloc+free
40 31 8 17.6 osh-native-souffle mut+alloc+free+gc
46 33 12 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
22 18 4 1.6 dash -
77 77 0 3.0 bash -
659 279 370 3.7 zsh -
50 41 8 84.9 bumpleak/osh mut
62 46 15 85.9 _bin/cxx-opt+bumproot/osh mut
72 40 32 86.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
100 40 60 73.5 osh-native mut+alloc
111 83 28 75.2 osh-native mut+alloc+free
186 158 28 49.7 osh-native mut+alloc+free+gc
194 170 24 50.5 osh-native mut+alloc+free+gc+exit
142 97 44 97.8 _bin/cxx-opt+nopool/osh mut+alloc
280 255 24 68.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
93 66 27 73.1 osh-native-souffle mut+alloc
103 67 36 75.0 osh-native-souffle mut+alloc+free
178 150 28 49.4 osh-native-souffle mut+alloc+free+gc
180 156 24 49.9 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
7 7 0 1.4 dash -
6 3 3 2.9 bash -
13 6 4 3.3 zsh -
6 6 0 12.0 bumpleak/osh mut
11 3 7 12.1 _bin/cxx-opt+bumproot/osh mut
8 0 8 11.6 _bin/cxx-opt+bumpsmall/osh mut+alloc
9 9 0 9.8 osh-native mut+alloc
9 5 5 10.1 osh-native mut+alloc+free
15 11 4 8.7 osh-native mut+alloc+free+gc
10 10 0 8.5 osh-native mut+alloc+free+gc+exit
18 13 4 11.5 _bin/cxx-opt+nopool/osh mut+alloc
13 9 4 9.6 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
8 4 4 9.7 osh-native-souffle mut+alloc
9 4 4 9.8 osh-native-souffle mut+alloc+free
10 6 3 7.9 osh-native-souffle mut+alloc+free+gc
15 11 4 7.9 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
16 16 0 1.4 dash -
31 26 4 2.8 bash -
24 16 8 3.3 zsh -
19 15 4 32.1 bumpleak/osh mut
30 22 7 32.9 _bin/cxx-opt+bumproot/osh mut
30 26 4 33.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
37 29 8 26.5 osh-native mut+alloc
39 26 13 26.6 osh-native mut+alloc+free
33 22 11 7.9 osh-native mut+alloc+free+gc
29 28 0 7.9 osh-native mut+alloc+free+gc+exit
56 40 16 36.3 _bin/cxx-opt+nopool/osh mut+alloc
38 30 9 9.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
32 16 16 26.0 osh-native-souffle mut+alloc
33 7 26 26.2 osh-native-souffle mut+alloc+free
23 23 0 7.6 osh-native-souffle mut+alloc+free+gc
23 23 0 7.5 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
74 69 4 3.1 bash -
171 110 61 56.0 bumpleak/osh mut
188 128 60 54.9 _bin/cxx-opt+bumproot/osh mut
202 138 63 56.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
219 143 76 47.4 osh-native mut+alloc
224 172 52 49.2 osh-native mut+alloc+free
195 154 40 8.8 osh-native mut+alloc+free+gc
193 144 48 8.9 osh-native mut+alloc+free+gc+exit
248 156 92 63.3 _bin/cxx-opt+nopool/osh mut+alloc
230 179 52 10.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
218 150 67 46.9 osh-native-souffle mut+alloc
225 169 56 48.6 osh-native-souffle mut+alloc+free
185 129 56 8.3 osh-native-souffle mut+alloc+free+gc
176 100 76 8.3 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
15 11 4 3.4 dash -
30 6 20 4.3 bash -
24 11 14 3.4 zsh -
21 12 10 11.7 bumpleak/osh mut
34 25 9 13.8 _bin/cxx-opt+bumproot/osh mut
32 21 10 12.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
27 16 12 11.0 osh-native mut+alloc
28 20 8 11.3 osh-native mut+alloc+free
25 20 6 9.0 osh-native mut+alloc+free+gc
27 18 9 9.0 osh-native mut+alloc+free+gc+exit
31 17 14 12.6 _bin/cxx-opt+nopool/osh mut+alloc
34 29 4 9.9 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
35 14 20 10.6 osh-native-souffle mut+alloc
32 5 26 10.7 osh-native-souffle mut+alloc+free
27 13 15 8.5 osh-native-souffle mut+alloc+free+gc
31 20 11 8.8 osh-native-souffle mut+alloc+free+gc+exit