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 49 9 19 12.0 18.0 476,761 1,282 6 406,608 5 203,304 osh-native
parse.configure-cpython 45 9 19 12.0 17.4 476,761 1,282 6 406,200 5 203,100 osh-native-souffle
parse.configure-coreutils 286 58 182 44.5 49.6 1,653,349 4,764 12 1,025,530 6 764,308 osh-native
parse.configure-coreutils 260 41 163 44.5 49.4 1,653,348 4,764 12 1,025,396 6 764,241 osh-native-souffle
parse.abuild 12 1 2 2.6 8.4 101,952 180 2 75,034 1 37,517 osh-native
parse.abuild 11 1 3 2.4 8.0 101,952 180 3 87,092 1 43,546 osh-native-souffle
ex.compute-fib 30 0 2 2.2 8.0 579,616 22,608 12 50,000 0 2,921 osh-native
ex.compute-fib 24 0 2 2.2 7.6 579,616 22,608 12 50,000 0 2,858 osh-native-souffle
ex.bashcomp-parse-help 222 1 9 10.9 8.9 1,026,014 15,258 22 50,000 0 3,917 osh-native
ex.bashcomp-parse-help 202 0 6 10.9 8.4 1,026,013 15,258 22 50,000 0 3,842 osh-native-souffle
ex.abuild-print-help 27 1 3 2.8 9.0 116,364 277 3 85,252 1 42,626 osh-native
ex.abuild-print-help 25 1 3 2.8 8.7 116,364 277 3 85,124 1 42,562 osh-native-souffle

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
7 5 2 1.6 dash -
25 23 2 3.0 bash -
128 67 69 3.5 zsh -
19 14 5 28.9 bumpleak/osh mut
22 16 6 30.4 _bin/cxx-opt+bumproot/osh mut
25 22 3 29.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
31 23 8 25.2 osh-native mut+alloc
41 31 10 25.8 osh-native mut+alloc+free
49 41 7 18.0 osh-native mut+alloc+free+gc
58 51 7 18.1 osh-native mut+alloc+free+gc+exit
45 30 15 32.5 _bin/cxx-opt+nopool/osh mut+alloc
107 94 13 22.1 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
28 19 10 24.8 osh-native-souffle mut+alloc
33 24 9 25.4 osh-native-souffle mut+alloc+free
45 37 8 17.4 osh-native-souffle mut+alloc+free+gc
43 35 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
25 23 2 1.6 dash -
80 78 2 3.1 bash -
422 222 226 3.4 zsh -
57 39 18 85.9 bumpleak/osh mut
66 47 19 85.3 _bin/cxx-opt+bumproot/osh mut
77 61 16 86.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
106 62 44 73.5 osh-native mut+alloc
122 79 43 75.3 osh-native mut+alloc+free
286 258 28 49.6 osh-native mut+alloc+free+gc
327 298 29 50.5 osh-native mut+alloc+free+gc+exit
173 107 66 99.0 _bin/cxx-opt+nopool/osh mut+alloc
387 351 36 66.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
98 66 32 73.1 osh-native-souffle mut+alloc
114 75 39 75.1 osh-native-souffle mut+alloc+free
260 233 27 49.4 osh-native-souffle mut+alloc+free+gc
232 209 23 50.2 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
2 1 1 1.4 dash -
6 5 1 3.0 bash -
10 5 4 3.3 zsh -
7 2 5 11.8 bumpleak/osh mut
8 5 4 11.2 _bin/cxx-opt+bumproot/osh mut
9 6 3 11.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
10 5 5 10.0 osh-native mut+alloc
10 5 5 10.0 osh-native mut+alloc+free
12 7 5 8.4 osh-native mut+alloc+free+gc
11 7 4 8.5 osh-native mut+alloc+free+gc+exit
13 8 5 11.3 _bin/cxx-opt+nopool/osh mut+alloc
15 9 5 9.4 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
9 4 6 9.7 osh-native-souffle mut+alloc
9 7 2 9.8 osh-native-souffle mut+alloc+free
11 9 3 8.0 osh-native-souffle mut+alloc+free+gc
11 8 3 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
11 10 1 1.4 dash -
29 28 1 2.9 bash -
24 16 7 3.1 zsh -
22 14 8 32.7 bumpleak/osh mut
27 25 2 31.3 _bin/cxx-opt+bumproot/osh mut
30 25 5 32.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
41 25 15 26.5 osh-native mut+alloc
42 28 14 26.6 osh-native mut+alloc+free
30 29 1 8.0 osh-native mut+alloc+free+gc
43 36 7 8.0 osh-native mut+alloc+free+gc+exit
58 36 21 35.9 _bin/cxx-opt+nopool/osh mut+alloc
41 34 7 9.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
34 19 15 26.0 osh-native-souffle mut+alloc
36 21 15 26.3 osh-native-souffle mut+alloc+free
24 23 1 7.6 osh-native-souffle mut+alloc+free+gc
23 18 5 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
75 71 4 3.1 bash -
196 122 74 57.1 bumpleak/osh mut
211 141 70 57.1 _bin/cxx-opt+bumproot/osh mut
245 162 82 58.7 _bin/cxx-opt+bumpsmall/osh mut+alloc
257 174 83 49.1 osh-native mut+alloc
265 166 99 51.0 osh-native mut+alloc+free
222 173 49 8.9 osh-native mut+alloc+free+gc
222 171 51 8.9 osh-native mut+alloc+free+gc+exit
275 180 95 65.0 _bin/cxx-opt+nopool/osh mut+alloc
301 230 71 10.3 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
246 158 88 48.6 osh-native-souffle mut+alloc
260 180 79 50.4 osh-native-souffle mut+alloc+free
202 132 70 8.4 osh-native-souffle mut+alloc+free+gc
213 142 71 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
11 4 7 3.5 dash -
22 15 7 4.5 bash -
30 14 17 3.4 zsh -
21 6 15 11.4 bumpleak/osh mut
26 9 17 13.5 _bin/cxx-opt+bumproot/osh mut
25 7 19 13.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
25 15 10 11.0 osh-native mut+alloc
27 9 18 11.3 osh-native mut+alloc+free
27 16 11 9.0 osh-native mut+alloc+free+gc
27 16 11 9.2 osh-native mut+alloc+free+gc+exit
29 15 15 12.8 _bin/cxx-opt+nopool/osh mut+alloc
28 18 11 9.8 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
24 12 13 10.7 osh-native-souffle mut+alloc
25 13 12 10.7 osh-native-souffle mut+alloc+free
25 13 13 8.7 osh-native-souffle mut+alloc+free+gc
25 14 11 8.7 osh-native-souffle mut+alloc+free+gc+exit