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 32 5 12 12.0 18.4 471,252 1,282 6 413,132 5 206,566 osh-native
parse.configure-cpython 37 5 13 12.0 18.9 471,252 1,282 6 413,140 5 206,570 osh-nosouffle
parse.configure-coreutils 141 24 72 45.9 51.7 1,637,991 4,764 12 1,056,630 6 787,836 osh-native
parse.configure-coreutils 145 22 68 45.9 52.3 1,637,990 4,764 12 1,056,638 6 787,840 osh-nosouffle
parse.abuild 9 1 2 2.6 8.7 102,780 180 3 86,618 1 43,309 osh-native
parse.abuild 10 1 2 2.6 9.4 102,780 180 3 86,626 1 43,313 osh-nosouffle
ex.compute-fib 20 0 2 2.8 8.3 576,705 22,608 12 50,000 0 2,976 osh-native
ex.compute-fib 25 0 2 2.8 8.7 576,705 22,608 12 50,000 0 2,981 osh-nosouffle
ex.bashcomp-parse-help 174 0 6 11.6 9.0 990,260 15,258 21 50,000 0 3,957 osh-native
ex.bashcomp-parse-help 180 0 6 11.6 9.7 990,259 15,258 21 50,000 0 3,966 osh-nosouffle
ex.abuild-print-help 18 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 -
68 39 34 3.5 zsh -
16 13 3 29.5 bumpleak/osh mut
18 12 6 30.6 _bin/cxx-opt+bumproot/osh mut
20 14 5 29.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
22 11 11 25.4 osh-native mut+alloc
25 15 10 26.0 osh-native mut+alloc+free
32 26 6 18.4 osh-native mut+alloc+free+gc
35 28 7 18.4 osh-native mut+alloc+free+gc+exit
25 17 8 25.8 osh-nosouffle mut+alloc
28 25 3 26.3 osh-nosouffle mut+alloc+free
37 31 6 18.9 osh-nosouffle mut+alloc+free+gc
37 33 4 18.8 osh-nosouffle mut+alloc+free+gc+exit
33 24 10 32.4 _bin/cxx-opt+nopool/osh mut+alloc
50 45 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
18 18 0 1.7 dash -
38 38 0 3.4 bash -
247 158 108 3.8 zsh -
50 34 16 85.6 bumpleak/osh mut
54 37 17 85.1 _bin/cxx-opt+bumproot/osh mut
62 47 15 87.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
71 44 27 73.7 osh-native mut+alloc
84 56 28 75.5 osh-native mut+alloc+free
141 121 20 51.7 osh-native mut+alloc+free+gc
146 125 21 52.3 osh-native mut+alloc+free+gc+exit
82 47 34 74.1 osh-nosouffle mut+alloc
94 62 32 76.0 osh-nosouffle mut+alloc+free
145 129 16 52.3 osh-nosouffle mut+alloc+free+gc
162 140 22 53.0 osh-nosouffle mut+alloc+free+gc+exit
111 75 36 97.8 _bin/cxx-opt+nopool/osh mut+alloc
210 187 23 72.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.4 dash -
3 2 1 3.3 bash -
5 3 2 3.4 zsh -
6 4 2 13.2 bumpleak/osh mut
6 3 3 11.6 _bin/cxx-opt+bumproot/osh mut
6 2 4 11.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
7 3 4 10.7 osh-native mut+alloc
8 3 5 10.9 osh-native mut+alloc+free
9 7 2 8.7 osh-native mut+alloc+free+gc
9 7 2 8.9 osh-native mut+alloc+free+gc+exit
8 3 5 11.3 osh-nosouffle mut+alloc
8 8 0 11.3 osh-nosouffle mut+alloc+free
10 8 2 9.4 osh-nosouffle mut+alloc+free+gc
10 9 1 9.6 osh-nosouffle mut+alloc+free+gc+exit
9 6 4 12.0 _bin/cxx-opt+nopool/osh mut+alloc
11 10 1 9.6 _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 9 0 1.6 dash -
29 28 1 3.4 bash -
16 14 2 3.5 zsh -
19 14 5 32.6 bumpleak/osh mut
21 16 5 32.1 _bin/cxx-opt+bumproot/osh mut
23 21 2 33.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
26 19 7 27.1 osh-native mut+alloc
29 24 5 27.3 osh-native mut+alloc+free
20 17 3 8.3 osh-native mut+alloc+free+gc
20 19 1 8.3 osh-native mut+alloc+free+gc+exit
31 19 12 27.5 osh-nosouffle mut+alloc
33 25 8 27.8 osh-nosouffle mut+alloc+free
25 23 2 8.7 osh-nosouffle mut+alloc+free+gc
25 23 2 8.8 osh-nosouffle mut+alloc+free+gc+exit
40 34 6 36.3 _bin/cxx-opt+nopool/osh mut+alloc
29 26 3 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 94 2 3.5 bash -
171 144 27 57.7 bumpleak/osh mut
181 155 26 58.1 _bin/cxx-opt+bumproot/osh mut
190 153 37 56.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
199 162 37 49.0 osh-native mut+alloc
209 169 39 50.6 osh-native mut+alloc+free
174 160 14 9.0 osh-native mut+alloc+free+gc
176 162 14 9.0 osh-native mut+alloc+free+gc+exit
202 169 33 49.4 osh-nosouffle mut+alloc
215 180 34 51.4 osh-nosouffle mut+alloc+free
180 164 16 9.7 osh-nosouffle mut+alloc+free+gc
180 164 16 9.6 osh-nosouffle mut+alloc+free+gc+exit
221 180 41 65.6 _bin/cxx-opt+nopool/osh mut+alloc
216 185 31 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 4 4 3.9 dash -
14 7 8 4.8 bash -
12 6 7 3.8 zsh -
15 8 7 12.7 bumpleak/osh mut
17 11 6 13.9 _bin/cxx-opt+bumproot/osh mut
16 6 10 13.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
16 6 11 11.5 osh-native mut+alloc
18 11 7 11.8 osh-native mut+alloc+free
18 13 5 9.6 osh-native mut+alloc+free+gc
19 12 7 9.7 osh-native mut+alloc+free+gc+exit
18 9 10 12.2 osh-nosouffle mut+alloc
20 12 9 12.3 osh-nosouffle mut+alloc+free
19 10 10 10.0 osh-nosouffle mut+alloc+free+gc
21 9 12 10.2 osh-nosouffle mut+alloc+free+gc+exit
21 12 10 13.0 _bin/cxx-opt+nopool/osh mut+alloc
21 13 8 10.3 _bin/cxx-opt+nopool/osh mut+alloc+free+gc