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 28 4 9 12.2 17.9 478,359 1,282 6 428,228 5 214,114 osh-native
parse.configure-coreutils 97 15 35 46.2 51.7 1,660,610 4,764 10 1,189,390 7 594,695 osh-native
parse.abuild 6 0 1 2.7 8.6 102,532 180 2 75,968 1 37,984 osh-native
ex.compute-fib 26 0 1 3.0 7.8 651,800 31,810 13 50,000 0 2,829 osh-native
ex.bashcomp-parse-help 113 0 3 12.3 8.7 1,077,990 27,375 23 50,000 0 3,938 osh-native
ex.abuild-print-help 15 1 2 2.9 9.1 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 -
17 16 0 3.2 bash -
64 46 23 3.4 zsh -
12 12 0 28.2 bumpleak/osh mut
15 11 4 28.3 _bin/cxx-opt+bumproot/osh mut
16 12 4 29.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
21 8 12 25.1 osh-native mut+alloc
23 14 9 25.5 osh-native mut+alloc+free
28 20 8 17.9 osh-native mut+alloc+free+gc
27 27 0 18.0 osh-native mut+alloc+free+gc+exit
31 15 15 33.2 _bin/cxx-opt+nopool/osh mut+alloc
40 36 4 22.7 _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
15 15 0 1.7 dash -
55 55 0 3.4 bash -
221 129 104 3.5 zsh -
37 29 8 84.6 bumpleak/osh mut
45 37 8 85.7 _bin/cxx-opt+bumproot/osh mut
52 36 16 87.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
65 49 16 74.0 osh-native mut+alloc
74 70 4 75.9 osh-native mut+alloc+free
97 77 19 51.7 osh-native mut+alloc+free+gc
101 93 8 52.4 osh-native mut+alloc+free+gc+exit
94 61 33 98.2 _bin/cxx-opt+nopool/osh mut+alloc
135 115 20 68.6 _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.6 dash -
4 4 0 3.1 bash -
4 4 0 3.4 zsh -
5 4 0 11.1 bumpleak/osh mut
5 5 0 11.9 _bin/cxx-opt+bumproot/osh mut
5 0 5 12.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
7 7 0 10.1 osh-native mut+alloc
6 6 0 10.1 osh-native mut+alloc+free
6 0 6 8.6 osh-native mut+alloc+free+gc
6 0 6 8.5 osh-native mut+alloc+free+gc+exit
8 4 4 11.3 _bin/cxx-opt+nopool/osh mut+alloc
8 8 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.7 dash -
23 23 0 3.1 bash -
15 15 0 3.5 zsh -
15 15 0 35.0 bumpleak/osh mut
20 20 0 35.7 _bin/cxx-opt+bumproot/osh mut
22 17 4 33.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
27 19 8 28.3 osh-native mut+alloc
28 20 8 28.6 osh-native mut+alloc+free
26 21 4 7.8 osh-native mut+alloc+free+gc
21 21 0 7.8 osh-native mut+alloc+free+gc+exit
38 31 8 38.8 _bin/cxx-opt+nopool/osh mut+alloc
29 29 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
51 51 0 3.3 bash -
101 85 16 58.9 bumpleak/osh mut
110 90 20 60.2 _bin/cxx-opt+bumproot/osh mut
124 96 28 59.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
133 104 28 50.6 osh-native mut+alloc
139 95 44 52.4 osh-native mut+alloc+free
113 89 24 8.7 osh-native mut+alloc+free+gc
115 95 20 8.7 osh-native mut+alloc+free+gc+exit
147 102 45 67.5 _bin/cxx-opt+nopool/osh mut+alloc
133 113 20 10.0 _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 -
13 10 3 4.6 bash -
11 4 7 3.6 zsh -
12 6 7 12.1 bumpleak/osh mut
12 11 2 13.4 _bin/cxx-opt+bumproot/osh mut
13 9 5 13.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
15 11 4 11.0 osh-native mut+alloc
14 11 3 11.1 osh-native mut+alloc+free
15 11 4 9.1 osh-native mut+alloc+free+gc
15 12 4 9.1 osh-native mut+alloc+free+gc+exit
16 9 7 12.3 _bin/cxx-opt+nopool/osh mut+alloc
16 16 1 9.9 _bin/cxx-opt+nopool/osh mut+alloc+free+gc