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 10835       10914 10.7   
 4      18  2916       13830 13.6   
 5      19   339       14169 13.9   
 6      20   408       14577 14.3   
 7      21   518       15095 14.8   
 8      22   648       15743 15.4   
 9      23   392       16135 15.8   
10      24 31430       47565 46.7   
11      25   283       47848 46.9   
12      26   184       48032 47.1   
13      27   218       48250 47.3   
14      28   254       48504 47.6   
15      29   131       48635 47.7   
16      30    94       48729 47.8   
17      31    83       48812 47.9   
18      32 25022       73834 72.4   
19      33    99       73933 72.5   
20      34    70       74003 72.6   
21      35    59       74062 72.6   
22      36    72       74134 72.7   
# A tibble: 5 × 4
  obj_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1    4096     3      101941    100.
2    4113     1      101942    100.
3    8192     1      101943    100.
4   16384     1      101944    100.
5   32768     1      101945    100 

Common Sizes
# A tibble: 8 × 2
  obj_len     n
    <int> <int>
1      24 31430
2      32 25022
3      48 22725
4      16 10835
5      18  2916
6      56  1241
7      40   811
8      64   760

    101,945 total allocations, total bytes = 3,446,106

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.75 
 4 List<BigStr*>* Alloc<List<BigStr*>>()                            4521   6.44 
 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.75 
 8 syntax_asdl::SourceLine* Alloc<syntax_asdl::SourceLine, int&, …  2512   3.58 
 9 List<syntax_asdl::Redir*>* Alloc<List<syntax_asdl::Redir*>>()    1687   2.40 
10 List<syntax_asdl::ParsedAssignment*>* Alloc<List<syntax_asdl::…  1589   2.26 
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.829
20 Tuple2<int, int>* Alloc<Tuple2<int, int>, int, int>(int&&, int…   559   0.796
# 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.00142
2 value_asdl::value__List* Alloc<value_asdl::value__List, List<va…     1 0.00142
3 word_eval::CompletionWordEvaluator* Alloc<word_eval::Completion…     1 0.00142
4 word_eval::NormalWordEvaluator* Alloc<word_eval::NormalWordEval…     1 0.00142
5 word_eval::TildeEvaluator* Alloc<word_eval::TildeEvaluator, sta…     1 0.00142

70,185 typed allocs, including 29,371 List<T>
68.85% 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  2916        2916    33.7
 2       2   339        3255    37.6
 3       3   408        3663    42.3
 4       4   518        4181    48.3
 5       5   648        4829    55.8
 6       6   392        5221    60.3
 7       7   300        5521    63.7
 8       8   283        5804    67.0
 9       9   184        5988    69.1
10      10   218        6206    71.7
11      11   247        6453    74.5
12      12   131        6584    76.0
13      13    94        6678    77.1
14      14    83        6761    78.1
15      15    85        6846    79.0
16      16    99        6945    80.2
# A tibble: 5 × 4
  str_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1     202     1        8657    100.
2     255     1        8658    100.
3     358     1        8659    100.
4    1024     1        8660    100.
5    4096     1        8661    100 

8,661 string allocations, total length = 102,372, total bytes = 249,609

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.66% 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   124       36788 91.4   
13        12    76       36864 91.6   
14        13    63       36927 91.8   
15        14    51       36978 91.9   
# A tibble: 5 × 4
  num_items     n n_less_than percent
      <int> <int>       <int>   <dbl>
1      2508     1       40236    100.
2      2509     1       40237    100.
3      2510     1       40238    100.
4      2511     1       40239    100.
5      2512     1       40240    100 

40,240 reserve() calls, total items = 3,264,993

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