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 43 7 16 12.1 17.8 476,737 1,282 6 409,280 5 204,640 osh-native
parse.configure-cpython 37 6 13 12.0 17.7 476,737 1,282 6 408,780 5 204,390 osh-native-souffle
parse.configure-coreutils 207 34 116 41.1 45.8 1,653,325 4,764 12 1,591,962 7 795,981 osh-native
parse.configure-coreutils 174 31 93 44.6 49.7 1,653,324 4,764 12 1,030,664 6 769,416 osh-native-souffle
parse.abuild 11 1 2 2.6 8.5 101,928 180 2 75,252 1 37,626 osh-native
parse.abuild 9 1 1 2.6 8.0 101,928 180 2 75,122 1 37,561 osh-native-souffle
ex.compute-fib 29 0 2 2.4 7.9 584,193 22,608 12 50,000 0 2,903 osh-native
ex.compute-fib 23 0 2 2.4 7.5 584,193 22,608 12 50,000 0 2,841 osh-native-souffle
ex.bashcomp-parse-help 189 0 5 10.3 8.7 995,274 12,911 21 50,000 0 3,891 osh-native
ex.bashcomp-parse-help 180 0 5 10.3 8.4 995,273 12,911 21 50,000 0 3,831 osh-native-souffle
ex.abuild-print-help 26 1 2 2.8 8.8 116,343 270 3 85,488 1 42,744 osh-native
ex.abuild-print-help 23 1 2 2.8 8.5 116,343 270 3 85,364 1 42,682 osh-native-souffle

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
7 7 0 1.6 dash -
24 19 4 3.0 bash -
135 88 54 3.1 zsh -
18 13 4 28.4 bumpleak/osh mut
19 19 0 29.0 _bin/cxx-opt+bumproot/osh mut
23 14 9 29.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
31 23 8 25.2 osh-native mut+alloc
32 16 16 25.7 osh-native mut+alloc+free
43 27 16 17.8 osh-native mut+alloc+free+gc
42 23 19 18.2 osh-native mut+alloc+free+gc+exit
45 29 16 32.2 _bin/cxx-opt+nopool/osh mut+alloc
51 39 12 22.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
28 19 8 24.8 osh-native-souffle mut+alloc
30 22 7 25.3 osh-native-souffle mut+alloc+free
37 29 8 17.7 osh-native-souffle mut+alloc+free+gc
81 73 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
21 21 0 1.6 dash -
78 78 0 3.3 bash -
447 203 253 3.5 zsh -
51 42 8 85.4 bumpleak/osh mut
62 53 8 85.6 _bin/cxx-opt+bumproot/osh mut
72 59 12 86.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
99 71 28 73.4 osh-native mut+alloc
108 68 40 75.4 osh-native mut+alloc+free
207 183 24 45.8 osh-native mut+alloc+free+gc
210 185 24 46.0 osh-native mut+alloc+free+gc+exit
154 95 59 97.8 _bin/cxx-opt+nopool/osh mut+alloc
288 260 28 60.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
90 55 35 72.9 osh-native-souffle mut+alloc
100 64 36 75.0 osh-native-souffle mut+alloc+free
174 145 28 49.7 osh-native-souffle mut+alloc+free+gc
183 147 36 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.4 dash -
6 6 0 3.0 bash -
8 9 0 3.3 zsh -
7 7 0 11.4 bumpleak/osh mut
7 7 0 11.4 _bin/cxx-opt+bumproot/osh mut
8 4 4 12.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
9 4 4 10.1 osh-native mut+alloc
10 10 0 10.1 osh-native mut+alloc+free
11 11 0 8.5 osh-native mut+alloc+free+gc
10 10 0 8.5 osh-native mut+alloc+free+gc+exit
13 9 4 11.6 _bin/cxx-opt+nopool/osh mut+alloc
14 13 0 9.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
8 8 0 9.6 osh-native-souffle mut+alloc
10 7 3 9.8 osh-native-souffle mut+alloc+free
9 4 4 8.0 osh-native-souffle mut+alloc+free+gc
9 0 9 8.3 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 11 0 1.4 dash -
29 29 0 2.9 bash -
24 20 4 3.3 zsh -
19 15 4 32.9 bumpleak/osh mut
26 13 13 31.9 _bin/cxx-opt+bumproot/osh mut
28 20 8 33.7 _bin/cxx-opt+bumpsmall/osh mut+alloc
41 28 12 26.3 osh-native mut+alloc
38 30 8 26.5 osh-native mut+alloc+free
29 28 0 7.9 osh-native mut+alloc+free+gc
29 22 7 8.0 osh-native mut+alloc+free+gc+exit
55 27 27 36.1 _bin/cxx-opt+nopool/osh mut+alloc
38 38 0 9.4 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
31 18 13 25.8 osh-native-souffle mut+alloc
33 25 8 26.2 osh-native-souffle mut+alloc+free
23 19 4 7.5 osh-native-souffle mut+alloc+free+gc
22 22 0 7.6 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 61 12 3.0 bash -
172 143 28 55.9 bumpleak/osh mut
184 152 32 55.8 _bin/cxx-opt+bumproot/osh mut
201 124 76 55.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
227 131 96 47.0 osh-native mut+alloc
230 147 83 48.8 osh-native mut+alloc+free
189 104 84 8.7 osh-native mut+alloc+free+gc
181 117 64 8.8 osh-native mut+alloc+free+gc+exit
242 177 64 62.7 _bin/cxx-opt+nopool/osh mut+alloc
238 163 75 10.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
238 175 63 46.6 osh-native-souffle mut+alloc
222 146 73 48.2 osh-native-souffle mut+alloc+free
180 132 48 8.4 osh-native-souffle mut+alloc+free+gc
181 132 48 8.5 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
16 5 9 3.4 dash -
23 16 7 4.3 bash -
24 10 12 3.5 zsh -
22 13 9 13.1 bumpleak/osh mut
27 13 14 13.2 _bin/cxx-opt+bumproot/osh mut
29 9 20 12.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
26 15 11 11.0 osh-native mut+alloc
25 22 4 11.1 osh-native mut+alloc+free
26 14 11 8.8 osh-native mut+alloc+free+gc
27 9 17 9.0 osh-native mut+alloc+free+gc+exit
33 21 12 12.3 _bin/cxx-opt+nopool/osh mut+alloc
28 21 8 10.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc
23 7 17 10.6 osh-native-souffle mut+alloc
28 18 6 10.6 osh-native-souffle mut+alloc+free
23 19 5 8.5 osh-native-souffle mut+alloc+free+gc
26 20 6 8.7 osh-native-souffle mut+alloc+free+gc+exit