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 62 0 0 17.3 22.5 531,416 1,282 6 564,964 5 282,482 osh-native
parse.configure-coreutils 263 0 0 62.1 68.9 1,826,616 4,764 9 2,070,572 8 1,035,286 osh-native
parse.abuild 16 0 0 3.8 9.6 112,787 180 2 83,148 1 41,574 osh-native
ex.compute-fib 92 0 0 8.8 8.1 702,897 31,810 14 50,000 0 3,351 osh-native
ex.bashcomp-parse-help 329 0 0 19.9 8.8 1,279,761 27,375 27 50,000 0 4,523 osh-native
ex.abuild-print-help 22 0 0 4.2 10.0 128,850 477 3 123,786 2 61,893 osh-native

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
6 6 0 1.8 dash -
28 28 0 3.5 bash -
137 73 69 4.3 zsh -
26 22 4 28.5 bumpleak/osh mut
34 25 8 28.8 _bin/cxx-opt+bumproot/osh mut
44 36 8 30.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
48 32 16 30.2 osh-native mut+alloc
67 63 4 33.8 osh-native mut+alloc+free
62 58 4 22.5 osh-native mut+alloc+free+gc
81 81 0 24.7 osh-native mut+alloc+free+gc+exit
58 50 8 32.7 _bin/cxx-opt+nopool/osh mut+alloc
79 63 16 25.3 _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
24 24 0 1.9 dash -
120 116 4 3.8 bash -
573 359 234 4.2 zsh -
92 64 28 85.3 bumpleak/osh mut
127 99 28 85.8 _bin/cxx-opt+bumproot/osh mut
174 157 16 92.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
177 137 40 90.0 osh-native mut+alloc
225 180 44 105.2 osh-native mut+alloc+free
263 239 24 68.9 osh-native mut+alloc+free+gc
314 274 40 78.8 osh-native mut+alloc+free+gc+exit
212 172 40 100.1 _bin/cxx-opt+nopool/osh mut+alloc
304 269 36 86.1 _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 2 0 1.8 dash -
6 6 0 3.4 bash -
15 4 11 4.3 zsh -
6 3 3 10.5 bumpleak/osh mut
8 8 0 10.8 _bin/cxx-opt+bumproot/osh mut
10 10 0 10.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
10 3 7 10.9 osh-native mut+alloc
12 8 4 11.6 osh-native mut+alloc+free
16 16 0 9.6 osh-native mut+alloc+free+gc
11 11 0 10.2 osh-native mut+alloc+free+gc+exit
12 8 4 11.4 _bin/cxx-opt+nopool/osh mut+alloc
13 13 0 10.1 _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
11 11 0 1.7 dash -
46 42 4 3.4 bash -
26 22 4 4.3 zsh -
51 47 4 33.0 bumpleak/osh mut
71 59 12 33.2 _bin/cxx-opt+bumproot/osh mut
95 79 16 34.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
90 82 8 33.2 osh-native mut+alloc
115 103 12 36.8 osh-native mut+alloc+free
92 88 4 8.1 osh-native mut+alloc+free+gc
78 78 0 8.2 osh-native mut+alloc+free+gc+exit
103 91 12 41.7 _bin/cxx-opt+nopool/osh mut+alloc
75 71 4 8.8 _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
209 209 0 3.9 bash -
335 287 48 59.0 bumpleak/osh mut
414 353 60 59.3 _bin/cxx-opt+bumproot/osh mut
354 342 12 61.7 _bin/cxx-opt+bumpsmall/osh mut+alloc
356 331 24 61.3 osh-native mut+alloc
471 390 80 67.5 osh-native mut+alloc+free
329 309 20 8.8 osh-native mut+alloc+free+gc
345 325 20 8.8 osh-native mut+alloc+free+gc+exit
481 413 68 69.7 _bin/cxx-opt+nopool/osh mut+alloc
389 365 24 9.6 _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
8 4 3 4.0 dash -
19 17 2 5.2 bash -
21 16 5 4.4 zsh -
16 16 0 11.5 bumpleak/osh mut
21 22 0 11.9 _bin/cxx-opt+bumproot/osh mut
21 16 6 12.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
23 23 1 11.9 osh-native mut+alloc
22 22 1 13.2 osh-native mut+alloc+free
22 19 4 10.0 osh-native mut+alloc+free+gc
21 18 4 10.6 osh-native mut+alloc+free+gc+exit
22 19 4 12.6 _bin/cxx-opt+nopool/osh mut+alloc
25 21 5 10.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc