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 30 4 10 12.0 18.2 471,252 1,282 6 413,132 5 206,566 osh-native
parse.configure-cpython 32 4 10 12.0 18.7 471,252 1,282 6 413,140 5 206,570 osh-nosouffle
parse.configure-coreutils 125 20 57 45.9 51.7 1,637,991 4,764 12 1,056,630 6 787,836 osh-native
parse.configure-coreutils 132 20 58 45.9 52.3 1,637,990 4,764 12 1,056,638 6 787,840 osh-nosouffle
parse.abuild 8 1 2 2.6 8.7 102,780 180 3 86,618 1 43,309 osh-native
parse.abuild 9 1 2 2.6 9.3 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 24 0 2 2.8 8.9 576,705 22,608 12 50,000 0 2,981 osh-nosouffle
ex.bashcomp-parse-help 172 0 5 11.6 9.0 990,260 15,258 21 50,000 0 3,957 osh-native
ex.bashcomp-parse-help 176 0 5 11.6 9.7 990,259 15,258 21 50,000 0 3,966 osh-nosouffle
ex.abuild-print-help 17 1 2 3.0 9.6 117,272 277 3 83,980 1 41,990 osh-native
ex.abuild-print-help 18 1 2 3.0 10.0 117,271 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 -
66 43 27 3.5 zsh -
15 12 3 30.3 bumpleak/osh mut
18 11 8 29.7 _bin/cxx-opt+bumproot/osh mut
19 17 2 29.3 _bin/cxx-opt+bumpsmall/osh mut+alloc
21 13 9 25.4 osh-native mut+alloc
24 14 10 26.1 osh-native mut+alloc+free
30 27 3 18.2 osh-native mut+alloc+free+gc
31 29 2 18.4 osh-native mut+alloc+free+gc+exit
24 15 9 26.1 osh-nosouffle mut+alloc
26 17 9 26.3 osh-nosouffle mut+alloc+free
32 28 4 18.7 osh-nosouffle mut+alloc+free+gc
33 25 9 18.9 osh-nosouffle mut+alloc+free+gc+exit
32 26 6 32.3 _bin/cxx-opt+nopool/osh mut+alloc
41 31 10 22.5 _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 17 1 1.7 dash -
39 39 0 3.5 bash -
229 137 106 3.7 zsh -
48 36 12 86.6 bumpleak/osh mut
52 35 16 86.1 _bin/cxx-opt+bumproot/osh mut
60 39 21 85.8 _bin/cxx-opt+bumpsmall/osh mut+alloc
71 43 28 73.7 osh-native mut+alloc
82 63 19 75.5 osh-native mut+alloc+free
125 102 23 51.7 osh-native mut+alloc+free+gc
132 104 28 52.5 osh-native mut+alloc+free+gc+exit
78 63 15 74.2 osh-nosouffle mut+alloc
90 69 21 76.0 osh-nosouffle mut+alloc+free
132 116 16 52.3 osh-nosouffle mut+alloc+free+gc
136 126 10 52.9 osh-nosouffle mut+alloc+free+gc+exit
110 70 40 98.2 _bin/cxx-opt+nopool/osh mut+alloc
178 156 22 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
1 1 0 1.7 dash -
3 2 1 3.3 bash -
5 5 0 3.5 zsh -
6 2 3 11.6 bumpleak/osh mut
6 4 2 13.3 _bin/cxx-opt+bumproot/osh mut
6 4 2 12.7 _bin/cxx-opt+bumpsmall/osh mut+alloc
7 3 3 10.5 osh-native mut+alloc
7 6 1 10.7 osh-native mut+alloc+free
8 8 0 8.7 osh-native mut+alloc+free+gc
8 6 2 8.8 osh-native mut+alloc+free+gc+exit
7 6 2 11.1 osh-nosouffle mut+alloc
8 7 1 11.0 osh-nosouffle mut+alloc+free
9 8 1 9.3 osh-nosouffle mut+alloc+free+gc
9 6 3 9.2 osh-nosouffle mut+alloc+free+gc+exit
9 5 4 12.0 _bin/cxx-opt+nopool/osh mut+alloc
10 7 4 9.8 _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 29 0 3.4 bash -
16 14 2 3.5 zsh -
18 14 4 33.1 bumpleak/osh mut
20 15 5 32.6 _bin/cxx-opt+bumproot/osh mut
23 17 6 32.4 _bin/cxx-opt+bumpsmall/osh mut+alloc
26 17 9 27.0 osh-native mut+alloc
29 19 10 27.3 osh-native mut+alloc+free
20 18 2 8.4 osh-native mut+alloc+free+gc
20 19 1 8.4 osh-native mut+alloc+free+gc+exit
30 21 10 27.5 osh-nosouffle mut+alloc
33 25 8 27.7 osh-nosouffle mut+alloc+free
24 23 1 8.9 osh-nosouffle mut+alloc+free+gc
25 25 0 8.9 osh-nosouffle mut+alloc+free+gc+exit
40 31 8 36.2 _bin/cxx-opt+nopool/osh mut+alloc
28 25 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 95 1 3.5 bash -
170 138 32 56.5 bumpleak/osh mut
178 152 26 56.1 _bin/cxx-opt+bumproot/osh mut
189 156 33 58.1 _bin/cxx-opt+bumpsmall/osh mut+alloc
192 159 33 48.9 osh-native mut+alloc
201 157 44 50.7 osh-native mut+alloc+free
172 149 23 9.0 osh-native mut+alloc+free+gc
171 155 16 9.0 osh-native mut+alloc+free+gc+exit
198 166 32 49.3 osh-nosouffle mut+alloc
220 179 41 51.2 osh-nosouffle mut+alloc+free
176 155 21 9.7 osh-nosouffle mut+alloc+free+gc
176 159 17 9.6 osh-nosouffle mut+alloc+free+gc+exit
218 176 42 65.0 _bin/cxx-opt+nopool/osh mut+alloc
201 189 12 10.5 _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 8 5 4.8 bash -
11 6 5 3.9 zsh -
15 5 10 14.4 bumpleak/osh mut
16 9 7 13.2 _bin/cxx-opt+bumproot/osh mut
15 8 7 12.5 _bin/cxx-opt+bumpsmall/osh mut+alloc
16 7 10 11.8 osh-native mut+alloc
17 10 8 11.8 osh-native mut+alloc+free
17 8 9 9.6 osh-native mut+alloc+free+gc
18 11 7 9.7 osh-native mut+alloc+free+gc+exit
16 11 6 11.9 osh-nosouffle mut+alloc
18 9 9 12.2 osh-nosouffle mut+alloc+free
18 11 8 10.0 osh-nosouffle mut+alloc+free+gc
19 14 6 10.0 osh-nosouffle mut+alloc+free+gc+exit
18 14 5 13.1 _bin/cxx-opt+nopool/osh mut+alloc
20 12 9 10.6 _bin/cxx-opt+nopool/osh mut+alloc+free+gc