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 29 4 10 12.0 18.2 471,252 1,282 6 413,132 5 206,566 osh-native
parse.configure-cpython 33 4 10 12.0 18.6 471,252 1,282 6 413,140 5 206,570 osh-nosouffle
parse.configure-coreutils 122 19 58 45.9 51.9 1,637,991 4,764 12 1,056,630 6 787,836 osh-native
parse.configure-coreutils 127 18 54 45.9 52.1 1,637,990 4,764 12 1,056,638 6 787,840 osh-nosouffle
parse.abuild 8 1 2 2.6 8.8 102,780 180 3 86,618 1 43,309 osh-native
parse.abuild 9 1 2 2.6 9.2 102,780 180 3 86,626 1 43,313 osh-nosouffle
ex.compute-fib 20 0 2 2.8 8.4 576,705 22,608 12 50,000 0 2,976 osh-native
ex.compute-fib 25 0 2 2.8 8.8 576,705 22,608 12 50,000 0 2,981 osh-nosouffle
ex.bashcomp-parse-help 169 0 5 11.6 9.3 990,260 15,258 21 50,000 0 3,957 osh-native
ex.bashcomp-parse-help 176 0 5 11.6 9.6 990,259 15,258 21 50,000 0 3,966 osh-nosouffle
ex.abuild-print-help 17 1 2 3.0 9.6 117,247 277 3 83,980 1 41,990 osh-native
ex.abuild-print-help 19 1 2 3.0 10.0 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
5 5 0 1.7 dash -
11 10 1 3.3 bash -
64 46 23 3.5 zsh -
15 9 6 29.8 bumpleak/osh mut
17 13 4 30.8 _bin/cxx-opt+bumproot/osh mut
19 14 5 29.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
21 16 5 25.4 osh-native mut+alloc
24 17 7 26.0 osh-native mut+alloc+free
29 23 6 18.2 osh-native mut+alloc+free+gc
31 20 11 18.3 osh-native mut+alloc+free+gc+exit
24 14 9 26.1 osh-nosouffle mut+alloc
27 20 7 26.3 osh-nosouffle mut+alloc+free
33 25 7 18.6 osh-nosouffle mut+alloc+free+gc
33 31 2 18.9 osh-nosouffle mut+alloc+free+gc+exit
32 21 12 32.2 _bin/cxx-opt+nopool/osh mut+alloc
41 33 8 22.6 _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
21 20 1 1.7 dash -
44 42 2 3.4 bash -
284 164 138 3.8 zsh -
48 35 13 86.1 bumpleak/osh mut
52 37 15 84.8 _bin/cxx-opt+bumproot/osh mut
60 44 16 85.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
69 38 31 73.7 osh-native mut+alloc
79 53 26 75.6 osh-native mut+alloc+free
122 108 13 51.9 osh-native mut+alloc+free+gc
130 113 16 52.4 osh-native mut+alloc+free+gc+exit
78 50 29 74.3 osh-nosouffle mut+alloc
93 73 19 76.2 osh-nosouffle mut+alloc+free
127 108 19 52.1 osh-nosouffle mut+alloc+free+gc
137 127 10 53.0 osh-nosouffle mut+alloc+free+gc+exit
106 78 28 97.7 _bin/cxx-opt+nopool/osh mut+alloc
170 148 22 71.2 _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 -
3 3 0 3.3 bash -
5 3 2 3.4 zsh -
5 3 2 11.7 bumpleak/osh mut
6 6 0 12.6 _bin/cxx-opt+bumproot/osh mut
6 4 2 11.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
6 4 2 10.5 osh-native mut+alloc
7 3 4 10.9 osh-native mut+alloc+free
8 6 2 8.8 osh-native mut+alloc+free+gc
8 6 2 8.9 osh-native mut+alloc+free+gc+exit
7 4 4 11.0 osh-nosouffle mut+alloc
8 7 1 11.3 osh-nosouffle mut+alloc+free
9 7 2 9.2 osh-nosouffle mut+alloc+free+gc
9 7 2 9.3 osh-nosouffle mut+alloc+free+gc+exit
9 2 7 12.0 _bin/cxx-opt+nopool/osh mut+alloc
10 8 2 9.5 _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.7 dash -
29 28 1 3.1 bash -
17 15 1 3.4 zsh -
18 13 6 32.0 bumpleak/osh mut
21 19 2 32.4 _bin/cxx-opt+bumproot/osh mut
23 20 3 32.6 _bin/cxx-opt+bumpsmall/osh mut+alloc
25 15 10 27.1 osh-native mut+alloc
28 21 7 27.3 osh-native mut+alloc+free
20 16 4 8.4 osh-native mut+alloc+free+gc
20 20 0 8.4 osh-native mut+alloc+free+gc+exit
30 20 10 27.4 osh-nosouffle mut+alloc
33 26 8 27.8 osh-nosouffle mut+alloc+free
25 22 2 8.8 osh-nosouffle mut+alloc+free+gc
25 22 3 8.7 osh-nosouffle mut+alloc+free+gc+exit
39 30 9 36.3 _bin/cxx-opt+nopool/osh mut+alloc
28 26 2 9.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
96 95 1 3.5 bash -
170 142 27 58.1 bumpleak/osh mut
180 152 28 57.8 _bin/cxx-opt+bumproot/osh mut
186 154 32 58.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
192 152 40 48.9 osh-native mut+alloc
203 169 34 50.9 osh-native mut+alloc+free
169 151 18 9.3 osh-native mut+alloc+free+gc
172 144 28 9.0 osh-native mut+alloc+free+gc+exit
198 162 36 49.2 osh-nosouffle mut+alloc
208 177 31 51.4 osh-nosouffle mut+alloc+free
176 159 16 9.6 osh-nosouffle mut+alloc+free+gc
175 160 15 9.6 osh-nosouffle mut+alloc+free+gc+exit
217 171 46 64.6 _bin/cxx-opt+nopool/osh mut+alloc
200 173 27 10.7 _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
7 3 4 3.9 dash -
13 9 5 4.7 bash -
12 8 4 3.9 zsh -
15 5 10 12.9 bumpleak/osh mut
15 8 7 12.8 _bin/cxx-opt+bumproot/osh mut
18 14 5 14.6 _bin/cxx-opt+bumpsmall/osh mut+alloc
16 8 8 11.7 osh-native mut+alloc
17 8 10 11.7 osh-native mut+alloc+free
17 10 8 9.6 osh-native mut+alloc+free+gc
18 11 8 9.7 osh-native mut+alloc+free+gc+exit
17 12 6 12.3 osh-nosouffle mut+alloc
19 12 7 12.3 osh-nosouffle mut+alloc+free
19 13 6 10.0 osh-nosouffle mut+alloc+free+gc
19 10 10 10.1 osh-nosouffle mut+alloc+free+gc+exit
19 10 9 13.2 _bin/cxx-opt+nopool/osh mut+alloc
20 11 10 10.6 _bin/cxx-opt+nopool/osh mut+alloc+free+gc