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 10841       10920 10.7   
 4      18  2916       13836 13.6   
 5      19   339       14175 13.9   
 6      20   408       14583 14.3   
 7      21   518       15101 14.8   
 8      22   648       15749 15.4   
 9      23   392       16141 15.8   
10      24 31430       47571 46.7   
11      25   283       47854 46.9   
12      26   184       48038 47.1   
13      27   218       48256 47.3   
14      28   254       48510 47.6   
15      29   131       48641 47.7   
16      30    94       48735 47.8   
17      31    83       48818 47.9   
18      32 25022       73840 72.4   
19      33    99       73939 72.5   
20      34    70       74009 72.6   
21      35    59       74068 72.6   
22      36    72       74140 72.7   
# A tibble: 5 × 4
  obj_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1    4096     3      101954    100.
2    4113     1      101955    100.
3    8192     1      101956    100.
4   16384     1      101957    100.
5   32768     1      101958    100 

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

    101,958 total allocations, total bytes = 3,446,586

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,192 typed allocs, including 29,371 List<T>
68.84% 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.49% 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 20802       20802    90.0
2        7   444       21246    92.0
3        8    29       21275    92.1
4       10  1048       22323    96.6
5       14    78       22401    97.0
6       15   222       22623    97.9
# A tibble: 5 × 4
  slab_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
1      511     1       23100    100.
2     1022     2       23102    100.
3     1023     1       23103    100.
4     2047     1       23104    100.
5     4095     1       23105    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)                                      3254
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)                                              1566
# 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,105 slabs, total items = 156,684
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 21366       21371 53.1   
 3         2  7613       28984 72.0   
 4         3  3015       31999 79.5   
 5         4  1926       33925 84.3   
 6         5   895       34820 86.5   
 7         6  1141       35961 89.4   
 8         7   258       36219 90.0   
 9         8   196       36415 90.5   
10         9   146       36561 90.9   
11        10   105       36666 91.1   
12        11   124       36790 91.4   
13        12    76       36866 91.6   
14        13    63       36929 91.8   
15        14    51       36980 91.9   
# A tibble: 5 × 4
  num_items     n n_less_than percent
      <int> <int>       <int>   <dbl>
1      2508     1       40238    100.
2      2509     1       40239    100.
3      2510     1       40240    100.
4      2511     1       40241    100.
5      2512     1       40242    100 

40,242 reserve() calls, total items = 3,265,000

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