Percentage of allocs less than 48 bytes: 96.3

All allocations
# A tibble: 22 × 4
   obj_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
 1       9    17          17  0.0167
 2      12    62          79  0.0775
 3      16 10811       10890 10.7   
 4      18  2914       13804 13.5   
 5      19   339       14143 13.9   
 6      20   408       14551 14.3   
 7      21   518       15069 14.8   
 8      22   648       15717 15.4   
 9      23   392       16109 15.8   
10      24 31399       47508 46.6   
11      25   282       47790 46.9   
12      26   184       47974 47.1   
13      27   218       48192 47.3   
14      28   254       48446 47.5   
15      29   131       48577 47.7   
16      30    94       48671 47.8   
17      31    83       48754 47.9   
18      32 25032       73786 72.4   
19      33    99       73885 72.5   
20      34    70       73955 72.6   
21      35    59       74014 72.6   
22      36    72       74086 72.7   
# A tibble: 5 × 4
  obj_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1    4096     3      101882    100.
2    4113     1      101883    100.
3    8192     1      101884    100.
4   16384     1      101885    100.
5   32768     1      101886    100 

Common Sizes
# A tibble: 8 × 2
  obj_len     n
    <int> <int>
1      24 31399
2      32 25032
3      48 22724
4      16 10811
5      18  2914
6      56  1244
7      40   799
8      64   760

    101,886 total allocations, total bytes = 3,444,805

Typed allocations
# A tibble: 20 × 3
   func_name                                                           n percent
   <chr>                                                           <int>   <dbl>
 1 syntax_asdl::Token* Alloc<syntax_asdl::Token, int&, int&, int&… 20862  29.7  
 2 List<syntax_asdl::word_part_t*>* Alloc<List<syntax_asdl::word_…  7358  10.5  
 3 syntax_asdl::CompoundWord* Alloc<syntax_asdl::CompoundWord, Li…  6143   8.76 
 4 List<BigStr*>* Alloc<List<BigStr*>>()                            4521   6.45 
 5 List<syntax_asdl::CompoundWord*>* Alloc<List<syntax_asdl::Comp…  3271   4.66 
 6 List<syntax_asdl::command_t*>* Alloc<List<syntax_asdl::command…  3227   4.60 
 7 List<syntax_asdl::word_t*>* Alloc<List<syntax_asdl::word_t*>>()  2634   3.76 
 8 syntax_asdl::SourceLine* Alloc<syntax_asdl::SourceLine, int&, …  2512   3.58 
 9 List<syntax_asdl::Redir*>* Alloc<List<syntax_asdl::Redir*>>()    1687   2.41 
10 List<syntax_asdl::ParsedAssignment*>* Alloc<List<syntax_asdl::…  1589   2.27 
11 syntax_asdl::SimpleVarSub* Alloc<syntax_asdl::SimpleVarSub, sy…  1327   1.89 
12 List<Tuple2<BigStr*, int>*>* Alloc<List<Tuple2<BigStr*, int>*>…  1291   1.84 
13 List<syntax_asdl::EnvPair*>* Alloc<List<syntax_asdl::EnvPair*>…  1202   1.71 
14 syntax_asdl::command__Simple* Alloc<syntax_asdl::command__Simp…  1202   1.71 
15 syntax_asdl::loc__Word* Alloc<syntax_asdl::loc__Word, syntax_a…  1202   1.71 
16 syntax_asdl::DoubleQuoted* Alloc<syntax_asdl::DoubleQuoted, sy…  1072   1.53 
17 List<int>* Alloc<List<int>>()                                     909   1.30 
18 syntax_asdl::command__CommandList* Alloc<syntax_asdl::command_…   723   1.03 
19 List<syntax_asdl::Token*>* Alloc<List<syntax_asdl::Token*>>()     582   0.830
20 Tuple2<int, int>* Alloc<Tuple2<int, int>, int, int>(int&&, int…   559   0.797
# A tibble: 5 × 3
  func_name                                                            n percent
  <chr>                                                            <int>   <dbl>
1 value_asdl::value__List* Alloc<value_asdl::value__List, List<va…     1 0.00143
2 value_asdl::value__List* Alloc<value_asdl::value__List, List<va…     1 0.00143
3 word_eval::CompletionWordEvaluator* Alloc<word_eval::Completion…     1 0.00143
4 word_eval::NormalWordEvaluator* Alloc<word_eval::NormalWordEval…     1 0.00143
5 word_eval::TildeEvaluator* Alloc<word_eval::TildeEvaluator, sta…     1 0.00143

70,129 typed allocs, including 29,371 List<T>
68.83% of allocs are typed

Str - NewStr() and OverAllocatedStr()
# A tibble: 16 × 4
   str_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
 1       1  2914        2914    33.7
 2       2   339        3253    37.6
 3       3   408        3661    42.3
 4       4   518        4179    48.3
 5       5   648        4827    55.8
 6       6   392        5219    60.3
 7       7   300        5519    63.7
 8       8   282        5801    67.0
 9       9   184        5985    69.1
10      10   218        6203    71.6
11      11   247        6450    74.5
12      12   131        6581    76.0
13      13    94        6675    77.1
14      14    83        6758    78.1
15      15    85        6843    79.0
16      16    99        6942    80.2
# A tibble: 5 × 4
  str_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1     202     1        8654    100.
2     255     1        8655    100.
3     358     1        8656    100.
4    1024     1        8657    100.
5    4096     1        8658    100 

8,658 string allocations, total length = 102,362, total bytes = 249,548

8.50% of allocs are strings
7.24% of bytes are strings

NewSlab()
  Lengths
# A tibble: 6 × 4
  slab_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
1        5 20800       20800    90.0
2        7   442       21242    92.0
3        8    28       21270    92.1
4       10  1048       22318    96.6
5       14    78       22396    97.0
6       15   222       22618    97.9
# A tibble: 5 × 4
  slab_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
1      511     1       23094    100.
2     1022     2       23096    100.
3     1023     1       23097    100.
4     2047     1       23098    100.
5     4095     1       23099    100 

  Slab Types
# A tibble: 6 × 2
  func_name                                                                    n
  <chr>                                                                    <int>
1 Slab<syntax_asdl::word_part_t*>* NewSlab<syntax_asdl::word_part_t*>(int)  7554
2 Slab<BigStr*>* NewSlab<BigStr*>(int)                                      3252
3 Slab<syntax_asdl::CompoundWord*>* NewSlab<syntax_asdl::CompoundWord*>(i…  3215
4 Slab<syntax_asdl::command_t*>* NewSlab<syntax_asdl::command_t*>(int)      3158
5 Slab<syntax_asdl::word_t*>* NewSlab<syntax_asdl::word_t*>(int)            2783
6 Slab<int>* NewSlab<int>(int)                                              1564
# A tibble: 5 × 2
  func_name                                                                    n
  <chr>                                                                    <int>
1 Slab<state::_ArgFrame*>* NewSlab<state::_ArgFrame*>(int)                     1
2 Slab<syntax_asdl::debug_frame_t*>* NewSlab<syntax_asdl::debug_frame_t*>…     1
3 Slab<value_asdl::regex_match_t*>* NewSlab<value_asdl::regex_match_t*>(i…     1
4 Slab<value_asdl::value__Dict*>* NewSlab<value_asdl::value__Dict*>(int)       1
5 Slab<vm::_AssignBuiltin*>* NewSlab<vm::_AssignBuiltin*>(int)                 1

23,099 slabs, total items = 156,636
22.67% of allocs are slabs

::reserve(int n)

  Num Items
# A tibble: 15 × 4
   num_items     n n_less_than percent
       <int> <int>       <int>   <dbl>
 1         0     5           5  0.0124
 2         1 21365       21370 53.1   
 3         2  7613       28983 72.0   
 4         3  3015       31998 79.5   
 5         4  1926       33924 84.3   
 6         5   895       34819 86.5   
 7         6  1140       35959 89.4   
 8         7   258       36217 90.0   
 9         8   196       36413 90.5   
10         9   146       36559 90.9   
11        10   105       36664 91.1   
12        11   123       36787 91.4   
13        12    76       36863 91.6   
14        13    63       36926 91.8   
15        14    51       36977 91.9   
# A tibble: 5 × 4
  num_items     n n_less_than percent
      <int> <int>       <int>   <dbl>
1      2508     1       40235    100.
2      2509     1       40236    100.
3      2510     1       40237    100.
4      2511     1       40238    100.
5      2512     1       40239    100 

40,239 reserve() calls, total items = 3,264,970

Untyped: 101,886
Typed + Str + Slab: 101,886