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 293 3 9 12.5 18.9 471,252 1,282 6 413,132 5 206,566 osh-native
parse.configure-cpython 301 6 15 12.5 19.1 471,252 1,282 6 413,140 5 206,570 osh-nosouffle
parse.configure-coreutils 1,174 23 61 46.4 52.3 1,637,991 4,764 12 1,056,630 6 787,836 osh-native
parse.configure-coreutils 1,182 23 58 46.4 52.7 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 20 0 1 3.4 8.9 576,705 22,608 12 50,000 0 2,976 osh-native
ex.compute-fib 25 0 1 3.4 9.4 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 230 0 4 12.2 10.1 990,259 15,258 21 50,000 0 3,966 osh-nosouffle
ex.abuild-print-help 60 1 2 3.7 10.0 117,247 277 3 83,980 1 41,990 osh-native
ex.abuild-print-help 61 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
6 6 1 1.7 dash -
13 13 0 3.4 bash -
87 47 46 3.4 zsh -
274 48 226 31.1 bumpleak/osh mut
274 41 233 29.5 _bin/cxx-opt+bumproot/osh mut
307 65 242 29.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
287 48 239 26.1 osh-native mut+alloc
291 45 245 26.3 osh-native mut+alloc+free
293 59 234 18.9 osh-native mut+alloc+free+gc
294 73 220 18.7 osh-native mut+alloc+free+gc+exit
291 44 247 26.3 osh-nosouffle mut+alloc
293 70 223 26.7 osh-nosouffle mut+alloc+free
301 74 227 19.1 osh-nosouffle mut+alloc+free+gc
298 69 230 19.3 osh-nosouffle mut+alloc+free+gc+exit
298 65 233 33.0 _bin/cxx-opt+nopool/osh mut+alloc
307 64 243 23.0 _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
25 25 0 1.7 dash -
42 42 0 3.4 bash -
322 178 166 3.7 zsh -
1,082 158 924 86.0 bumpleak/osh mut
1,085 170 915 87.0 _bin/cxx-opt+bumproot/osh mut
1,097 185 912 85.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
1,121 184 937 74.1 osh-native mut+alloc
1,132 193 939 75.9 osh-native mut+alloc+free
1,174 235 939 52.3 osh-native mut+alloc+free+gc
1,172 265 907 52.9 osh-native mut+alloc+free+gc+exit
1,120 189 930 74.6 osh-nosouffle mut+alloc
1,137 220 917 76.6 osh-nosouffle mut+alloc+free
1,182 261 921 52.7 osh-nosouffle mut+alloc+free+gc
1,187 285 901 53.3 osh-nosouffle mut+alloc+free+gc+exit
1,156 232 924 99.5 _bin/cxx-opt+nopool/osh mut+alloc
1,232 310 922 74.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.6 dash -
4 3 1 3.3 bash -
7 2 5 3.5 zsh -
43 12 31 12.0 bumpleak/osh mut
43 8 35 11.8 _bin/cxx-opt+bumproot/osh mut
44 13 31 12.9 _bin/cxx-opt+bumpsmall/osh mut+alloc
45 11 34 11.0 osh-native mut+alloc
45 7 38 10.7 osh-native mut+alloc+free
46 9 37 9.2 osh-native mut+alloc+free+gc
46 9 37 9.2 osh-native mut+alloc+free+gc+exit
46 7 39 11.5 osh-nosouffle mut+alloc
46 10 36 11.4 osh-nosouffle mut+alloc+free
47 14 33 9.7 osh-nosouffle mut+alloc+free+gc
46 13 33 9.7 osh-nosouffle mut+alloc+free+gc+exit
48 14 34 12.4 _bin/cxx-opt+nopool/osh mut+alloc
49 10 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 10 0 1.6 dash -
30 29 1 3.3 bash -
21 14 7 3.4 zsh -
17 13 4 33.0 bumpleak/osh mut
17 15 2 33.9 _bin/cxx-opt+bumproot/osh mut
21 18 3 34.2 _bin/cxx-opt+bumpsmall/osh mut+alloc
28 17 11 27.4 osh-native mut+alloc
30 21 9 27.7 osh-native mut+alloc+free
20 17 3 8.9 osh-native mut+alloc+free+gc
20 17 3 8.7 osh-native mut+alloc+free+gc+exit
34 17 17 28.0 osh-nosouffle mut+alloc
37 26 11 28.2 osh-nosouffle mut+alloc+free
25 22 3 9.4 osh-nosouffle mut+alloc+free+gc
25 22 3 9.3 osh-nosouffle mut+alloc+free+gc+exit
46 31 15 36.9 _bin/cxx-opt+nopool/osh mut+alloc
30 24 6 10.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
104 102 2 3.4 bash -
215 162 53 58.0 bumpleak/osh mut
219 164 55 58.3 _bin/cxx-opt+bumproot/osh mut
238 166 72 58.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
256 184 72 49.3 osh-native mut+alloc
263 193 70 51.1 osh-native mut+alloc+free
223 178 45 9.7 osh-native mut+alloc+free+gc
220 167 53 9.4 osh-native mut+alloc+free+gc+exit
259 192 67 49.7 osh-nosouffle mut+alloc
268 200 68 51.7 osh-nosouffle mut+alloc+free
230 186 44 10.1 osh-nosouffle mut+alloc+free+gc
225 173 53 10.0 osh-nosouffle mut+alloc+free+gc+exit
279 189 90 66.4 _bin/cxx-opt+nopool/osh mut+alloc
250 201 49 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 2 7 3.9 dash -
15 6 10 4.8 bash -
15 8 8 3.9 zsh -
60 11 49 13.5 bumpleak/osh mut
59 16 43 15.1 _bin/cxx-opt+bumproot/osh mut
59 17 42 13.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
60 15 46 12.2 osh-native mut+alloc
61 18 43 12.2 osh-native mut+alloc+free
60 13 48 10.0 osh-native mut+alloc+free+gc
60 19 42 10.1 osh-native mut+alloc+free+gc+exit
60 15 46 12.8 osh-nosouffle mut+alloc
62 18 44 12.7 osh-nosouffle mut+alloc+free
61 15 47 10.5 osh-nosouffle mut+alloc+free+gc
62 22 40 10.5 osh-nosouffle mut+alloc+free+gc+exit
63 18 46 13.7 _bin/cxx-opt+nopool/osh mut+alloc
64 24 40 11.0 _bin/cxx-opt+nopool/osh mut+alloc+free+gc