Memory Management Overhead

Source code: oils/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 289 4 10 12.5 18.7 471,252 1,282 6 413,132 5 206,566 osh-native
parse.configure-cpython 293 4 10 12.5 19.3 471,252 1,282 6 413,140 5 206,570 osh-nosouffle
parse.configure-coreutils 1,184 26 66 46.4 52.1 1,637,991 4,764 12 1,056,630 6 787,836 osh-native
parse.configure-coreutils 1,179 24 61 46.4 52.9 1,637,990 4,764 12 1,056,638 6 787,840 osh-nosouffle
parse.abuild 46 1 2 3.1 9.0 102,780 180 3 86,618 1 43,309 osh-native
parse.abuild 46 1 2 3.1 9.7 102,780 180 3 86,626 1 43,313 osh-nosouffle
ex.compute-fib 21 0 2 3.4 9.0 576,705 22,608 12 50,000 0 2,976 osh-native
ex.compute-fib 25 0 2 3.4 9.3 576,705 22,608 12 50,000 0 2,981 osh-nosouffle
ex.bashcomp-parse-help 222 0 4 12.2 9.6 990,260 15,258 21 50,000 0 3,957 osh-native
ex.bashcomp-parse-help 227 0 4 12.2 10.1 990,259 15,258 21 50,000 0 3,966 osh-nosouffle
ex.abuild-print-help 61 1 2 3.7 9.7 117,247 277 3 83,980 1 41,990 osh-native
ex.abuild-print-help 62 1 3 3.7 10.5 117,246 277 3 83,988 1 41,994 osh-nosouffle

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 -
14 14 0 3.4 bash -
88 52 43 3.5 zsh -
278 43 235 31.2 bumpleak/osh mut
274 43 231 29.5 _bin/cxx-opt+bumproot/osh mut
277 42 235 29.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
284 53 231 26.0 osh-native mut+alloc
285 53 233 26.3 osh-native mut+alloc+free
289 50 239 18.7 osh-native mut+alloc+free+gc
291 57 234 18.7 osh-native mut+alloc+free+gc+exit
286 64 222 26.3 osh-nosouffle mut+alloc
288 49 239 26.9 osh-nosouffle mut+alloc+free
293 73 220 19.3 osh-nosouffle mut+alloc+free+gc
293 67 227 19.1 osh-nosouffle mut+alloc+free+gc+exit
299 54 245 33.7 _bin/cxx-opt+nopool/osh mut+alloc
305 58 246 23.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

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
23 22 1 1.6 dash -
43 41 2 3.4 bash -
321 174 169 3.7 zsh -
1,075 191 884 86.1 bumpleak/osh mut
1,101 210 891 85.2 _bin/cxx-opt+bumproot/osh mut
1,096 195 901 87.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
1,119 202 917 74.2 osh-native mut+alloc
1,131 207 924 76.2 osh-native mut+alloc+free
1,184 258 926 52.1 osh-native mut+alloc+free+gc
1,187 252 935 52.9 osh-native mut+alloc+free+gc+exit
1,136 206 930 74.6 osh-nosouffle mut+alloc
1,132 232 900 76.4 osh-nosouffle mut+alloc+free
1,179 253 926 52.9 osh-nosouffle mut+alloc+free+gc
1,183 259 924 53.3 osh-nosouffle mut+alloc+free+gc+exit
1,166 213 953 99.8 _bin/cxx-opt+nopool/osh mut+alloc
1,221 283 938 74.4 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

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.7 dash -
4 2 1 3.1 bash -
6 2 4 3.4 zsh -
42 16 27 12.5 bumpleak/osh mut
42 9 33 12.9 _bin/cxx-opt+bumproot/osh mut
43 14 29 11.7 _bin/cxx-opt+bumpsmall/osh mut+alloc
45 7 38 11.0 osh-native mut+alloc
45 9 36 11.0 osh-native mut+alloc+free
46 4 42 9.0 osh-native mut+alloc+free+gc
46 13 33 9.2 osh-native mut+alloc+free+gc+exit
46 12 34 11.4 osh-nosouffle mut+alloc
45 11 35 11.4 osh-nosouffle mut+alloc+free
46 9 37 9.7 osh-nosouffle mut+alloc+free+gc
47 15 32 9.6 osh-nosouffle mut+alloc+free+gc+exit
48 16 32 12.4 _bin/cxx-opt+nopool/osh mut+alloc
48 11 37 10.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

ex.compute-fib

A synthetic benchmark for POSIX shell arithmetic.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
9 8 1 1.4 dash -
30 28 2 3.3 bash -
21 15 6 3.5 zsh -
17 11 6 33.4 bumpleak/osh mut
18 15 3 32.7 _bin/cxx-opt+bumproot/osh mut
21 17 4 34.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
29 17 12 27.7 osh-native mut+alloc
31 24 7 27.7 osh-native mut+alloc+free
21 19 2 9.0 osh-native mut+alloc+free+gc
20 18 2 8.8 osh-native mut+alloc+free+gc+exit
33 21 12 27.9 osh-nosouffle mut+alloc
35 26 10 28.3 osh-nosouffle mut+alloc+free
25 21 4 9.3 osh-nosouffle mut+alloc+free+gc
26 22 4 9.3 osh-nosouffle mut+alloc+free+gc+exit
46 26 20 37.0 _bin/cxx-opt+nopool/osh mut+alloc
30 25 5 10.5 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

ex.bashcomp-parse-help

A realistic bash-completion workload.

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
103 101 2 3.4 bash -
213 162 51 58.4 bumpleak/osh mut
219 170 49 57.7 _bin/cxx-opt+bumproot/osh mut
243 184 58 58.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
257 177 81 49.2 osh-native mut+alloc
266 199 67 51.4 osh-native mut+alloc+free
222 175 47 9.6 osh-native mut+alloc+free+gc
220 171 50 9.4 osh-native mut+alloc+free+gc+exit
262 195 67 49.8 osh-nosouffle mut+alloc
267 195 72 51.7 osh-nosouffle mut+alloc+free
227 187 40 10.1 osh-nosouffle mut+alloc+free+gc
228 182 46 10.0 osh-nosouffle mut+alloc+free+gc+exit
279 184 95 65.6 _bin/cxx-opt+nopool/osh mut+alloc
247 203 44 11.1 _bin/cxx-opt+nopool/osh mut+alloc+free+gc

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 4 6 3.9 dash -
15 8 8 4.6 bash -
17 10 8 3.9 zsh -
57 10 47 14.4 bumpleak/osh mut
59 15 44 13.9 _bin/cxx-opt+bumproot/osh mut
59 14 46 13.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
59 11 48 12.3 osh-native mut+alloc
60 17 44 12.1 osh-native mut+alloc+free
61 15 47 9.7 osh-native mut+alloc+free+gc
61 14 48 10.0 osh-native mut+alloc+free+gc+exit
61 17 45 12.8 osh-nosouffle mut+alloc
62 16 46 12.8 osh-nosouffle mut+alloc+free
62 21 42 10.5 osh-nosouffle mut+alloc+free+gc
62 15 48 10.5 osh-nosouffle mut+alloc+free+gc+exit
63 13 50 13.9 _bin/cxx-opt+nopool/osh mut+alloc
63 22 41 11.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc