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 24 2 7 12.2 17.8 478,359 1,282 6 428,228 5 214,114 osh-native
parse.configure-coreutils 101 14 36 46.2 51.6 1,660,610 4,764 10 1,189,390 7 594,695 osh-native
parse.abuild 6 0 1 2.7 8.5 102,532 180 2 75,968 1 37,984 osh-native
ex.compute-fib 22 0 1 3.0 7.8 651,800 31,810 13 50,000 0 2,829 osh-native
ex.bashcomp-parse-help 118 0 3 12.3 8.6 1,077,990 27,375 23 50,000 0 3,938 osh-native
ex.abuild-print-help 14 0 1 2.9 9.0 117,524 477 3 85,988 1 42,994 osh-native

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
4 4 0 1.7 dash -
16 16 0 3.0 bash -
69 33 40 3.6 zsh -
12 8 4 29.8 bumpleak/osh mut
16 8 8 28.6 _bin/cxx-opt+bumproot/osh mut
17 12 4 28.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
19 11 8 25.2 osh-native mut+alloc
24 16 8 25.6 osh-native mut+alloc+free
24 16 8 17.8 osh-native mut+alloc+free+gc
24 20 4 18.1 osh-native mut+alloc+free+gc+exit
28 24 4 32.3 _bin/cxx-opt+nopool/osh mut+alloc
41 29 12 22.8 _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
16 16 0 1.7 dash -
64 60 0 3.3 bash -
225 142 95 3.6 zsh -
37 33 4 84.6 bumpleak/osh mut
44 36 8 86.4 _bin/cxx-opt+bumproot/osh mut
50 50 0 85.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
69 61 8 74.1 osh-native mut+alloc
80 56 24 75.9 osh-native mut+alloc+free
101 80 20 51.6 osh-native mut+alloc+free+gc
103 91 12 52.5 osh-native mut+alloc+free+gc+exit
97 65 32 99.9 _bin/cxx-opt+nopool/osh mut+alloc
136 124 12 69.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
1 1 0 1.7 dash -
5 2 2 3.1 bash -
4 4 0 3.4 zsh -
4 4 0 11.8 bumpleak/osh mut
4 4 0 11.2 _bin/cxx-opt+bumproot/osh mut
6 6 0 12.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
5 5 0 10.0 osh-native mut+alloc
5 0 5 10.1 osh-native mut+alloc+free
6 5 0 8.5 osh-native mut+alloc+free+gc
6 6 0 8.7 osh-native mut+alloc+free+gc+exit
7 4 4 11.3 _bin/cxx-opt+nopool/osh mut+alloc
7 7 0 9.4 _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
7 7 0 1.5 dash -
22 22 0 3.0 bash -
14 14 0 3.4 zsh -
16 12 4 34.7 bumpleak/osh mut
19 14 5 33.8 _bin/cxx-opt+bumproot/osh mut
21 21 0 35.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
28 28 0 28.2 osh-native mut+alloc
28 23 4 28.6 osh-native mut+alloc+free
22 22 0 7.8 osh-native mut+alloc+free+gc
21 21 0 7.8 osh-native mut+alloc+free+gc+exit
41 16 24 38.9 _bin/cxx-opt+nopool/osh mut+alloc
28 28 0 9.4 _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
50 50 0 3.1 bash -
107 79 28 59.3 bumpleak/osh mut
115 98 16 59.6 _bin/cxx-opt+bumproot/osh mut
124 92 32 61.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
137 96 40 50.6 osh-native mut+alloc
139 99 40 52.4 osh-native mut+alloc+free
118 110 8 8.6 osh-native mut+alloc+free+gc
115 99 16 8.7 osh-native mut+alloc+free+gc+exit
150 117 32 67.9 _bin/cxx-opt+nopool/osh mut+alloc
134 122 12 9.9 _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
6 5 1 3.7 dash -
12 8 5 4.4 bash -
11 6 4 3.6 zsh -
12 8 4 13.0 bumpleak/osh mut
15 5 10 13.1 _bin/cxx-opt+bumproot/osh mut
15 8 7 13.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
14 13 1 11.0 osh-native mut+alloc
14 5 9 11.1 osh-native mut+alloc+free
14 14 0 9.0 osh-native mut+alloc+free+gc
14 13 1 9.1 osh-native mut+alloc+free+gc+exit
15 12 4 12.4 _bin/cxx-opt+nopool/osh mut+alloc
16 15 1 9.8 _bin/cxx-opt+nopool/osh mut+alloc+free+gc