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 27 3 7 12.0 17.9 476,779 1,282 6 406,634 5 203,317 osh-native
parse.configure-cpython 25 2 7 12.0 17.5 476,779 1,282 6 406,624 5 203,312 osh-native-souffle
parse.configure-coreutils 126 19 50 44.5 49.8 1,653,367 4,764 12 1,025,556 6 764,321 osh-native
parse.configure-coreutils 103 18 44 44.5 49.4 1,653,366 4,764 12 1,025,546 6 764,316 osh-native-souffle
parse.abuild 6 0 1 2.6 8.6 101,970 180 2 75,060 1 37,530 osh-native
parse.abuild 6 0 1 2.6 8.3 101,970 180 2 75,050 1 37,525 osh-native-souffle
ex.compute-fib 20 0 1 2.2 8.2 579,730 22,608 12 50,000 0 2,930 osh-native
ex.compute-fib 15 0 1 2.2 7.7 579,730 22,608 12 50,000 0 2,925 osh-native-souffle
ex.bashcomp-parse-help 130 0 3 11.1 8.9 1,021,047 15,258 22 50,000 0 3,919 osh-native
ex.bashcomp-parse-help 125 0 2 11.1 8.5 1,021,046 15,258 22 50,000 0 3,910 osh-native-souffle
ex.abuild-print-help 25 1 2 2.8 9.3 116,366 277 3 85,272 1 42,636 osh-native
ex.abuild-print-help 17 0 2 2.8 8.7 116,366 277 3 85,262 1 42,631 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.6 dash -
16 16 0 3.2 bash -
111 72 46 3.6 zsh -
21 12 8 27.9 bumpleak/osh mut
22 13 9 28.4 _bin/cxx-opt+bumproot/osh mut
23 12 12 28.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
23 15 8 25.4 osh-native mut+alloc
24 20 4 25.6 osh-native mut+alloc+free
27 15 11 17.9 osh-native mut+alloc+free+gc
27 16 12 18.0 osh-native mut+alloc+free+gc+exit
33 25 8 32.1 _bin/cxx-opt+nopool/osh mut+alloc
37 37 0 22.1 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
21 8 12 24.8 osh-native-souffle mut+alloc
22 22 0 25.2 osh-native-souffle mut+alloc+free
25 10 14 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 -
54 50 4 3.3 bash -
318 196 139 3.6 zsh -
67 35 32 83.9 bumpleak/osh mut
75 39 35 84.5 _bin/cxx-opt+bumproot/osh mut
79 43 35 84.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
77 49 28 73.7 osh-native mut+alloc
84 64 20 75.5 osh-native mut+alloc+free
126 94 31 49.8 osh-native mut+alloc+free+gc
114 90 24 50.4 osh-native mut+alloc+free+gc+exit
115 67 47 97.7 _bin/cxx-opt+nopool/osh mut+alloc
166 126 40 66.4 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
66 29 37 73.1 osh-native-souffle mut+alloc
73 32 41 75.1 osh-native-souffle mut+alloc+free
103 91 12 49.4 osh-native-souffle mut+alloc+free+gc
104 88 16 50.1 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 2 0 1.5 dash -
4 4 0 3.1 bash -
6 6 0 3.4 zsh -
5 5 0 10.3 bumpleak/osh mut
6 6 0 10.7 _bin/cxx-opt+bumproot/osh mut
12 8 4 10.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
6 0 6 10.3 osh-native mut+alloc
6 0 6 10.2 osh-native mut+alloc+free
6 3 3 8.6 osh-native mut+alloc+free+gc
7 3 3 8.6 osh-native mut+alloc+free+gc+exit
14 9 5 11.5 _bin/cxx-opt+nopool/osh mut+alloc
8 4 4 9.6 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
5 0 5 9.7 osh-native-souffle mut+alloc
6 3 3 9.8 osh-native-souffle mut+alloc+free
6 3 3 8.3 osh-native-souffle mut+alloc+free+gc
6 6 0 8.4 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
7 7 0 1.7 dash -
19 19 0 3.0 bash -
17 16 0 3.3 zsh -
13 13 0 31.7 bumpleak/osh mut
18 13 4 31.5 _bin/cxx-opt+bumproot/osh mut
20 12 8 33.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
27 19 8 26.5 osh-native mut+alloc
29 20 8 26.7 osh-native mut+alloc+free
20 20 0 8.2 osh-native mut+alloc+free+gc
20 19 0 8.1 osh-native mut+alloc+free+gc+exit
40 32 8 36.3 _bin/cxx-opt+nopool/osh mut+alloc
26 19 8 9.7 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
22 11 11 26.0 osh-native-souffle mut+alloc
24 12 12 26.2 osh-native-souffle mut+alloc+free
15 15 0 7.7 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
50 42 8 3.2 bash -
138 71 67 55.7 bumpleak/osh mut
177 113 64 56.2 _bin/cxx-opt+bumproot/osh mut
158 93 65 57.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
156 120 36 49.1 osh-native mut+alloc
162 122 39 51.1 osh-native mut+alloc+free
130 81 49 8.9 osh-native mut+alloc+free+gc
131 87 44 8.9 osh-native mut+alloc+free+gc+exit
176 108 68 64.4 _bin/cxx-opt+nopool/osh mut+alloc
151 127 24 10.3 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
151 111 40 48.7 osh-native-souffle mut+alloc
157 96 60 50.5 osh-native-souffle mut+alloc+free
125 97 28 8.5 osh-native-souffle mut+alloc+free+gc
126 93 32 8.6 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
12 7 5 3.7 dash -
21 18 3 4.6 bash -
19 7 12 3.6 zsh -
22 15 7 11.3 bumpleak/osh mut
29 12 18 11.9 _bin/cxx-opt+bumproot/osh mut
33 28 6 12.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
24 17 8 11.4 osh-native mut+alloc
25 9 16 11.3 osh-native mut+alloc+free
25 9 17 9.3 osh-native mut+alloc+free+gc
24 19 5 9.3 osh-native mut+alloc+free+gc+exit
28 19 10 12.7 _bin/cxx-opt+nopool/osh mut+alloc
27 15 12 9.9 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
15 9 6 10.8 osh-native-souffle mut+alloc
21 7 14 10.9 osh-native-souffle mut+alloc+free
17 11 7 8.7 osh-native-souffle mut+alloc+free+gc
18 11 7 8.8 osh-native-souffle mut+alloc+free+gc+exit