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 35 3 9 12.0 18.1 476,673 1,282 6 408,780 5 204,390 osh-native
parse.configure-cpython 32 3 9 12.0 17.6 476,673 1,282 6 408,650 5 204,325 osh-native-souffle
parse.configure-coreutils 192 36 102 46.1 51.6 1,653,261 4,764 12 1,069,146 6 798,654 osh-native
parse.configure-coreutils 148 22 73 41.1 45.5 1,653,260 4,764 12 1,591,702 7 795,851 osh-native-souffle
parse.abuild 9 1 1 2.6 8.4 101,864 180 2 75,122 1 37,561 osh-native
parse.abuild 9 1 2 2.4 7.9 101,864 180 3 87,218 1 43,609 osh-native-souffle
ex.compute-fib 27 0 1 2.4 8.1 584,132 22,608 12 50,000 0 2,838 osh-native
ex.compute-fib 21 0 1 2.4 7.5 584,132 22,608 12 50,000 0 2,777 osh-native-souffle
ex.bashcomp-parse-help 177 0 4 10.3 8.8 995,209 12,911 21 50,000 0 3,832 osh-native
ex.bashcomp-parse-help 168 0 3 10.3 8.4 995,208 12,911 21 50,000 0 3,765 osh-native-souffle
ex.abuild-print-help 23 1 2 2.8 8.9 116,279 270 3 85,358 1 42,679 osh-native
ex.abuild-print-help 22 1 2 2.8 8.7 116,279 270 3 85,234 1 42,617 osh-native-souffle

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
6 6 0 1.6 dash -
23 21 2 3.0 bash -
100 54 52 3.4 zsh -
16 11 5 29.0 bumpleak/osh mut
20 15 4 30.3 _bin/cxx-opt+bumproot/osh mut
22 16 6 29.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
29 21 8 25.0 osh-native mut+alloc
31 22 9 25.6 osh-native mut+alloc+free
35 27 8 18.1 osh-native mut+alloc+free+gc
36 30 6 18.0 osh-native mut+alloc+free+gc+exit
41 26 15 32.4 _bin/cxx-opt+nopool/osh mut+alloc
46 35 11 22.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
27 18 9 24.9 osh-native-souffle mut+alloc
28 18 10 25.2 osh-native-souffle mut+alloc+free
32 21 11 17.6 osh-native-souffle mut+alloc+free+gc
33 23 9 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
21 19 2 1.4 dash -
79 77 2 3.3 bash -
363 191 193 3.5 zsh -
49 43 6 85.6 bumpleak/osh mut
60 51 9 85.0 _bin/cxx-opt+bumproot/osh mut
70 51 19 86.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
99 66 34 73.4 osh-native mut+alloc
112 75 37 75.4 osh-native mut+alloc+free
192 167 25 51.6 osh-native mut+alloc+free+gc
158 132 26 52.2 osh-native mut+alloc+free+gc+exit
134 95 39 98.8 _bin/cxx-opt+nopool/osh mut+alloc
235 202 33 74.1 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
89 57 32 73.1 osh-native-souffle mut+alloc
94 57 37 75.0 osh-native-souffle mut+alloc+free
148 131 17 45.5 osh-native-souffle mut+alloc+free+gc
145 127 18 52.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
2 2 0 1.4 dash -
5 5 0 2.9 bash -
7 2 5 3.3 zsh -
6 5 1 10.8 bumpleak/osh mut
6 3 3 10.8 _bin/cxx-opt+bumproot/osh mut
7 4 3 11.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
8 6 2 10.1 osh-native mut+alloc
9 7 1 10.1 osh-native mut+alloc+free
9 5 4 8.4 osh-native mut+alloc+free+gc
9 5 4 8.7 osh-native mut+alloc+free+gc+exit
11 4 8 11.4 _bin/cxx-opt+nopool/osh mut+alloc
11 7 4 9.3 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
7 4 4 9.8 osh-native-souffle mut+alloc
8 7 1 9.8 osh-native-souffle mut+alloc+free
9 7 2 7.9 osh-native-souffle mut+alloc+free+gc
9 9 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
10 8 2 1.6 dash -
28 25 3 2.9 bash -
23 20 3 3.3 zsh -
19 12 6 31.0 bumpleak/osh mut
25 20 5 31.7 _bin/cxx-opt+bumproot/osh mut
28 23 5 32.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
36 23 13 26.3 osh-native mut+alloc
38 23 15 26.5 osh-native mut+alloc+free
27 26 1 8.1 osh-native mut+alloc+free+gc
27 25 2 7.9 osh-native mut+alloc+free+gc+exit
54 39 15 36.0 _bin/cxx-opt+nopool/osh mut+alloc
38 34 4 9.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
29 23 6 25.7 osh-native-souffle mut+alloc
31 21 10 26.3 osh-native-souffle mut+alloc+free
21 19 2 7.5 osh-native-souffle mut+alloc+free+gc
21 19 2 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
73 68 5 3.1 bash -
165 113 52 54.9 bumpleak/osh mut
174 117 57 55.5 _bin/cxx-opt+bumproot/osh mut
188 132 56 57.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
204 124 80 47.0 osh-native mut+alloc
212 143 69 48.7 osh-native mut+alloc+free
177 133 44 8.8 osh-native mut+alloc+free+gc
177 132 44 8.8 osh-native mut+alloc+free+gc+exit
227 160 67 63.0 _bin/cxx-opt+nopool/osh mut+alloc
206 164 42 10.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
197 129 69 46.6 osh-native-souffle mut+alloc
208 136 72 48.3 osh-native-souffle mut+alloc+free
168 117 51 8.4 osh-native-souffle mut+alloc+free+gc
168 112 56 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
9 3 6 3.5 dash -
19 11 9 4.5 bash -
17 7 11 3.5 zsh -
19 7 12 12.4 bumpleak/osh mut
20 11 10 12.9 _bin/cxx-opt+bumproot/osh mut
19 7 13 12.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
21 8 13 11.0 osh-native mut+alloc
21 10 12 11.0 osh-native mut+alloc+free
23 10 13 8.9 osh-native mut+alloc+free+gc
23 10 14 9.2 osh-native mut+alloc+free+gc+exit
24 14 11 12.7 _bin/cxx-opt+nopool/osh mut+alloc
24 16 9 10.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
20 8 13 10.6 osh-native-souffle mut+alloc
22 8 15 10.6 osh-native-souffle mut+alloc+free
22 12 10 8.7 osh-native-souffle mut+alloc+free+gc
23 14 10 8.7 osh-native-souffle mut+alloc+free+gc+exit