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 41 7 13 12.0 17.8 476,636 1,282 6 408,686 5 204,343 osh-native
parse.configure-coreutils 157 28 69 46.1 51.5 1,653,224 4,764 12 1,069,052 6 798,607 osh-native
parse.abuild 9 1 1 2.6 8.4 101,827 180 2 75,028 1 37,514 osh-native
ex.compute-fib 29 0 2 3.1 7.9 584,088 31,810 12 50,000 0 2,788 osh-native
ex.bashcomp-parse-help 189 0 5 12.3 8.7 1,001,962 27,376 21 50,000 0 3,776 osh-native
ex.abuild-print-help 24 1 2 2.8 9.0 116,032 478 3 85,262 1 42,631 osh-native

Resource Usage

parse.configure-cpython

elapsed ms user ms sys ms max rss MB shell label shell runtime opts
6 6 0 1.6 dash -
23 19 4 3.1 bash -
106 57 55 3.4 zsh -
17 13 4 28.0 bumpleak/osh mut
21 12 8 28.7 _bin/cxx-opt+bumproot/osh mut
23 19 4 29.0 _bin/cxx-opt+bumpsmall/osh mut+alloc
31 27 4 25.0 osh-native mut+alloc
33 16 16 25.4 osh-native mut+alloc+free
41 36 4 17.8 osh-native mut+alloc+free+gc
38 26 11 17.8 osh-native mut+alloc+free+gc+exit
44 28 16 32.5 _bin/cxx-opt+nopool/osh mut+alloc
52 40 12 22.1 _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 21 0 1.4 dash -
79 75 4 3.1 bash -
377 206 193 3.5 zsh -
50 34 15 83.6 bumpleak/osh mut
61 49 11 84.4 _bin/cxx-opt+bumproot/osh mut
71 59 12 86.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
99 55 43 73.4 osh-native mut+alloc
106 73 33 75.1 osh-native mut+alloc+free
157 141 16 51.5 osh-native mut+alloc+free+gc
170 153 16 52.2 osh-native mut+alloc+free+gc+exit
140 96 44 97.6 _bin/cxx-opt+nopool/osh mut+alloc
204 183 20 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.3 dash -
6 6 0 3.0 bash -
8 4 4 3.4 zsh -
6 3 3 10.2 bumpleak/osh mut
6 3 3 12.1 _bin/cxx-opt+bumproot/osh mut
8 0 8 12.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
9 4 4 9.8 osh-native mut+alloc
9 9 0 10.1 osh-native mut+alloc+free
9 9 0 8.4 osh-native mut+alloc+free+gc
10 9 0 8.4 osh-native mut+alloc+free+gc+exit
12 12 0 11.3 _bin/cxx-opt+nopool/osh mut+alloc
12 12 0 9.3 _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 7 3 1.6 dash -
29 29 0 3.0 bash -
24 20 4 3.1 zsh -
21 12 8 31.7 bumpleak/osh mut
27 23 4 32.5 _bin/cxx-opt+bumproot/osh mut
30 25 4 32.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
37 29 8 26.6 osh-native mut+alloc
40 24 16 27.1 osh-native mut+alloc+free
29 29 0 7.9 osh-native mut+alloc+free+gc
28 24 4 7.7 osh-native mut+alloc+free+gc+exit
55 47 8 36.1 _bin/cxx-opt+nopool/osh mut+alloc
38 30 8 9.2 _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
73 65 8 3.1 bash -
170 119 52 56.4 bumpleak/osh mut
182 113 69 56.5 _bin/cxx-opt+bumproot/osh mut
197 108 88 57.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
214 137 77 48.9 osh-native mut+alloc
228 152 76 50.6 osh-native mut+alloc+free
189 133 55 8.7 osh-native mut+alloc+free+gc
190 133 57 8.5 osh-native mut+alloc+free+gc+exit
233 133 100 64.6 _bin/cxx-opt+nopool/osh mut+alloc
215 150 63 10.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
10 5 6 3.4 dash -
21 14 7 4.5 bash -
19 14 5 3.4 zsh -
20 12 9 13.0 bumpleak/osh mut
23 12 11 13.2 _bin/cxx-opt+bumproot/osh mut
24 12 12 13.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
22 8 15 10.7 osh-native mut+alloc
24 18 7 11.1 osh-native mut+alloc+free
24 13 10 9.0 osh-native mut+alloc+free+gc
24 14 10 8.8 osh-native mut+alloc+free+gc+exit
26 16 10 12.4 _bin/cxx-opt+nopool/osh mut+alloc
27 16 12 9.7 _bin/cxx-opt+nopool/osh mut+alloc+free+gc