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 10831       10910 10.7   
 4      18  2914       13824 13.6   
 5      19   339       14163 13.9   
 6      20   408       14571 14.3   
 7      21   518       15089 14.8   
 8      22   648       15737 15.4   
 9      23   392       16129 15.8   
10      24 31423       47552 46.7   
11      25   282       47834 46.9   
12      26   184       48018 47.1   
13      27   218       48236 47.3   
14      28   254       48490 47.6   
15      29   131       48621 47.7   
16      30    94       48715 47.8   
17      31    83       48798 47.9   
18      32 25032       73830 72.4   
19      33    99       73929 72.5   
20      34    70       73999 72.6   
21      35    59       74058 72.7   
22      36    72       74130 72.7   
# A tibble: 5 × 4
  obj_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1    4096     3      101927    100.
2    4113     1      101928    100.
3    8192     1      101929    100.
4   16384     1      101930    100.
5   32768     1      101931    100 

Common Sizes
# A tibble: 8 × 2
  obj_len     n
    <int> <int>
1      24 31423
2      32 25032
3      48 22725
4      16 10831
5      18  2914
6      56  1243
7      40   799
8      64   761

    101,931 total allocations, total bytes = 3,445,749

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.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,174 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  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.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 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   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,978

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