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 10842       10921 10.7   
 4      18  2916       13837 13.6   
 5      19   339       14176 13.9   
 6      20   408       14584 14.3   
 7      21   518       15102 14.8   
 8      22   648       15750 15.4   
 9      23   392       16142 15.8   
10      24 31434       47576 46.7   
11      25   283       47859 46.9   
12      26   184       48043 47.1   
13      27   218       48261 47.3   
14      28   254       48515 47.6   
15      29   131       48646 47.7   
16      30    94       48740 47.8   
17      31    83       48823 47.9   
18      32 25022       73845 72.4   
19      33    99       73944 72.5   
20      34    70       74014 72.6   
21      35    59       74073 72.6   
22      36    72       74145 72.7   
# A tibble: 5 × 4
  obj_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1    4096     3      101963    100.
2    4113     1      101964    100.
3    8192     1      101965    100.
4   16384     1      101966    100.
5   32768     1      101967    100 

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

    101,967 total allocations, total bytes = 3,446,882

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.29 
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,198 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 20804       20804    90.0
2        7   444       21248    92.0
3        8    30       21278    92.1
4       10  1048       22326    96.6
5       14    78       22404    97.0
6       15   222       22626    97.9
# A tibble: 5 × 4
  slab_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
1      511     1       23103    100.
2     1022     2       23105    100.
3     1023     1       23106    100.
4     2047     1       23107    100.
5     4095     1       23108    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)                                      3255
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)                                              1567
# 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,108 slabs, total items = 156,702
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 21367       21372 53.1   
 3         2  7613       28985 72.0   
 4         3  3015       32000 79.5   
 5         4  1926       33926 84.3   
 6         5   895       34821 86.5   
 7         6  1141       35962 89.4   
 8         7   258       36220 90.0   
 9         8   196       36416 90.5   
10         9   146       36562 90.9   
11        10   105       36667 91.1   
12        11   124       36791 91.4   
13        12    76       36867 91.6   
14        13    63       36930 91.8   
15        14    51       36981 91.9   
# A tibble: 5 × 4
  num_items     n n_less_than percent
      <int> <int>       <int>   <dbl>
1      2508     1       40239    100.
2      2509     1       40240    100.
3      2510     1       40241    100.
4      2511     1       40242    100.
5      2512     1       40243    100 

40,243 reserve() calls, total items = 3,265,001

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