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 10836       10915 10.7   
 4      18  2916       13831 13.6   
 5      19   339       14170 13.9   
 6      20   408       14578 14.3   
 7      21   518       15096 14.8   
 8      22   648       15744 15.4   
 9      23   392       16136 15.8   
10      24 31430       47566 46.7   
11      25   283       47849 46.9   
12      26   184       48033 47.1   
13      27   218       48251 47.3   
14      28   254       48505 47.6   
15      29   131       48636 47.7   
16      30    94       48730 47.8   
17      31    83       48813 47.9   
18      32 25022       73835 72.4   
19      33    99       73934 72.5   
20      34    70       74004 72.6   
21      35    59       74063 72.6   
22      36    72       74135 72.7   
# A tibble: 5 × 4
  obj_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1    4096     3      101942    100.
2    4113     1      101943    100.
3    8192     1      101944    100.
4   16384     1      101945    100.
5   32768     1      101946    100 

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

    101,946 total allocations, total bytes = 3,446,122

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,186 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,946
Typed + Str + Slab: 101,946