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 294 5 13 12.5 18.9 471,252 1,282 6 413,132 5 206,566 osh-native
parse.configure-cpython 300 6 14 12.5 19.4 471,252 1,282 6 413,140 5 206,570 osh-nosouffle
parse.configure-coreutils 1,206 27 86 46.4 52.3 1,637,991 4,764 12 1,056,630 6 787,836 osh-native
parse.configure-coreutils 1,190 28 76 46.4 52.5 1,637,990 4,764 12 1,056,638 6 787,840 osh-nosouffle
parse.abuild 46 1 2 3.1 9.2 102,780 180 3 86,618 1 43,309 osh-native
parse.abuild 47 1 2 3.1 9.7 102,780 180 3 86,626 1 43,313 osh-nosouffle
ex.compute-fib 21 0 2 3.4 8.9 576,705 22,608 12 50,000 0 2,976 osh-native
ex.compute-fib 26 0 2 3.4 9.3 576,705 22,608 12 50,000 0 2,981 osh-nosouffle
ex.bashcomp-parse-help 223 0 3 12.2 9.7 990,260 15,258 21 50,000 0 3,957 osh-native
ex.bashcomp-parse-help 227 0 3 12.2 10.1 990,259 15,258 21 50,000 0 3,966 osh-nosouffle
ex.abuild-print-help 61 1 2 3.7 10.1 117,247 277 3 83,980 1 41,990 osh-native
ex.abuild-print-help 62 1 2 3.7 10.5 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
7 5 2 1.7 dash -
13 12 1 3.4 bash -
89 45 51 3.5 zsh -
274 51 223 29.6 bumpleak/osh mut
279 42 237 31.2 _bin/cxx-opt+bumproot/osh mut
283 52 231 30.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
288 48 240 26.0 osh-native mut+alloc
286 60 226 26.5 osh-native mut+alloc+free
294 66 228 18.9 osh-native mut+alloc+free+gc
299 62 237 19.0 osh-native mut+alloc+free+gc+exit
289 49 240 26.5 osh-nosouffle mut+alloc
292 52 240 26.7 osh-nosouffle mut+alloc+free
300 65 235 19.4 osh-nosouffle mut+alloc+free+gc
298 65 233 19.3 osh-nosouffle mut+alloc+free+gc+exit
302 58 244 34.3 _bin/cxx-opt+nopool/osh mut+alloc
315 76 239 23.2 _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
23 23 0 1.7 dash -
42 40 2 3.4 bash -
329 188 165 3.7 zsh -
1,083 187 896 85.1 bumpleak/osh mut
1,084 189 895 86.5 _bin/cxx-opt+bumproot/osh mut
1,098 187 911 85.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
1,122 189 933 74.3 osh-native mut+alloc
1,133 199 934 76.0 osh-native mut+alloc+free
1,206 266 940 52.3 osh-native mut+alloc+free+gc
1,207 276 931 53.0 osh-native mut+alloc+free+gc+exit
1,121 201 920 74.9 osh-nosouffle mut+alloc
1,125 211 914 76.4 osh-nosouffle mut+alloc+free
1,190 258 932 52.5 osh-nosouffle mut+alloc+free+gc
1,196 295 901 53.4 osh-nosouffle mut+alloc+free+gc+exit
1,175 206 969 99.6 _bin/cxx-opt+nopool/osh mut+alloc
1,261 318 943 72.5 _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 1 1 1.6 dash -
4 3 1 3.1 bash -
6 4 2 3.3 zsh -
43 5 38 13.6 bumpleak/osh mut
43 11 32 13.7 _bin/cxx-opt+bumproot/osh mut
45 13 31 13.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
45 10 35 11.1 osh-native mut+alloc
46 10 35 10.9 osh-native mut+alloc+free
46 14 32 9.2 osh-native mut+alloc+free+gc
46 11 35 9.0 osh-native mut+alloc+free+gc+exit
46 8 38 11.4 osh-nosouffle mut+alloc
46 14 33 11.4 osh-nosouffle mut+alloc+free
47 11 37 9.7 osh-nosouffle mut+alloc+free+gc
47 12 35 9.6 osh-nosouffle mut+alloc+free+gc+exit
49 15 33 12.4 _bin/cxx-opt+nopool/osh mut+alloc
50 11 39 10.0 _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
10 9 1 1.4 dash -
31 31 0 3.3 bash -
21 17 4 3.4 zsh -
18 10 8 33.3 bumpleak/osh mut
19 15 3 32.9 _bin/cxx-opt+bumproot/osh mut
22 18 5 34.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
30 15 15 27.5 osh-native mut+alloc
32 18 14 27.9 osh-native mut+alloc+free
21 18 3 8.9 osh-native mut+alloc+free+gc
21 17 4 8.8 osh-native mut+alloc+free+gc+exit
35 24 11 28.0 osh-nosouffle mut+alloc
37 18 19 28.0 osh-nosouffle mut+alloc+free
26 24 2 9.3 osh-nosouffle mut+alloc+free+gc
26 23 3 9.3 osh-nosouffle mut+alloc+free+gc+exit
48 34 14 37.0 _bin/cxx-opt+nopool/osh mut+alloc
31 29 2 10.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
104 99 5 3.5 bash -
213 171 42 56.5 bumpleak/osh mut
222 165 57 56.7 _bin/cxx-opt+bumproot/osh mut
240 165 75 57.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
259 190 69 49.3 osh-native mut+alloc
268 210 58 51.1 osh-native mut+alloc+free
223 165 58 9.7 osh-native mut+alloc+free+gc
222 177 45 9.4 osh-native mut+alloc+free+gc+exit
273 201 72 49.8 osh-nosouffle mut+alloc
273 210 63 51.8 osh-nosouffle mut+alloc+free
227 176 51 10.1 osh-nosouffle mut+alloc+free+gc
228 177 51 10.0 osh-nosouffle mut+alloc+free+gc+exit
279 194 85 64.9 _bin/cxx-opt+nopool/osh mut+alloc
254 207 46 11.1 _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
9 5 5 3.8 dash -
16 7 10 4.7 bash -
16 7 9 3.9 zsh -
58 14 44 14.6 bumpleak/osh mut
59 18 41 15.1 _bin/cxx-opt+bumproot/osh mut
60 16 45 14.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
60 18 43 12.2 osh-native mut+alloc
62 15 47 12.2 osh-native mut+alloc+free
61 14 48 10.1 osh-native mut+alloc+free+gc
63 15 49 10.0 osh-native mut+alloc+free+gc+exit
62 22 40 12.7 osh-nosouffle mut+alloc
63 15 49 12.7 osh-nosouffle mut+alloc+free
62 20 43 10.5 osh-nosouffle mut+alloc+free+gc
63 17 46 10.5 osh-nosouffle mut+alloc+free+gc+exit
64 22 42 13.6 _bin/cxx-opt+nopool/osh mut+alloc
64 12 53 11.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc