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 72 0 0 17.1 21.7 531,536 1,282 6 523,350 5 261,675 osh-native
parse.configure-coreutils 288 0 0 62.1 69.1 1,826,736 4,764 9 2,071,850 8 1,035,925 osh-native
parse.abuild 12 0 0 3.8 9.4 112,907 180 2 83,300 1 41,650 osh-native
ex.compute-fib 115 0 0 12.5 7.9 1,217,200 31,810 26 50,000 0 3,416 osh-native
ex.bashcomp-parse-help 411 0 0 22.6 8.7 1,684,263 27,375 36 50,000 0 4,589 osh-native
ex.abuild-print-help 28 0 0 4.2 9.9 134,470 477 3 122,264 2 61,132 osh-native

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
7 4 4 1.8 dash -
40 31 0 3.6 bash -
140 66 79 4.3 zsh -
28 16 12 28.4 bumpleak/osh mut
38 26 11 28.8 _bin/cxx-opt+bumproot/osh mut
54 34 19 30.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
48 36 12 29.6 osh-native mut+alloc
65 53 12 33.9 osh-native mut+alloc+free
72 63 8 21.7 osh-native mut+alloc+free+gc
77 69 8 24.3 osh-native mut+alloc+free+gc+exit
70 62 8 32.7 _bin/cxx-opt+nopool/osh mut+alloc
82 74 8 25.1 _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
28 28 0 1.9 dash -
134 133 0 3.7 bash -
584 313 285 4.5 zsh -
103 71 32 85.5 bumpleak/osh mut
146 119 28 85.7 _bin/cxx-opt+bumproot/osh mut
183 139 44 91.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
187 159 28 89.9 osh-native mut+alloc
237 201 36 105.1 osh-native mut+alloc+free
288 256 32 69.1 osh-native mut+alloc+free+gc
346 317 28 78.6 osh-native mut+alloc+free+gc+exit
230 190 40 100.1 _bin/cxx-opt+nopool/osh mut+alloc
341 294 48 86.0 _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
3 3 0 1.8 dash -
22 12 0 3.5 bash -
23 18 4 4.2 zsh -
10 10 0 10.4 bumpleak/osh mut
13 4 9 10.6 _bin/cxx-opt+bumproot/osh mut
12 4 8 10.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
13 9 4 10.9 osh-native mut+alloc
14 14 0 11.5 osh-native mut+alloc+free
12 8 4 9.4 osh-native mut+alloc+free+gc
13 9 4 10.2 osh-native mut+alloc+free+gc+exit
12 12 0 11.2 _bin/cxx-opt+nopool/osh mut+alloc
15 11 4 9.9 _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
12 12 0 1.7 dash -
44 37 7 3.5 bash -
26 26 0 4.4 zsh -
82 65 16 51.7 bumpleak/osh mut
111 82 29 51.7 _bin/cxx-opt+bumproot/osh mut
142 122 20 53.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
138 126 12 51.9 osh-native mut+alloc
163 122 41 58.5 osh-native mut+alloc+free
115 115 0 7.9 osh-native mut+alloc+free+gc
126 126 0 7.9 osh-native mut+alloc+free+gc+exit
167 135 32 61.2 _bin/cxx-opt+nopool/osh mut+alloc
131 127 4 8.9 _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
235 235 0 4.0 bash -
388 320 68 73.8 bumpleak/osh mut
398 337 60 73.9 _bin/cxx-opt+bumproot/osh mut
427 367 60 77.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
427 379 48 76.1 osh-native mut+alloc
461 412 48 83.4 osh-native mut+alloc+free
411 387 24 8.7 osh-native mut+alloc+free+gc
422 397 24 8.7 osh-native mut+alloc+free+gc+exit
491 415 76 87.5 _bin/cxx-opt+nopool/osh mut+alloc
471 452 16 9.3 _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 5 4 4.1 dash -
20 16 4 5.3 bash -
24 17 8 4.4 zsh -
15 10 6 11.6 bumpleak/osh mut
23 19 5 11.9 _bin/cxx-opt+bumproot/osh mut
28 26 4 12.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
38 25 14 12.1 osh-native mut+alloc
29 22 8 13.2 osh-native mut+alloc+free
28 28 1 9.9 osh-native mut+alloc+free+gc
34 30 5 10.2 osh-native mut+alloc+free+gc+exit
33 28 6 12.8 _bin/cxx-opt+nopool/osh mut+alloc
38 37 2 10.2 _bin/cxx-opt+nopool/osh mut+alloc+free+gc