Percentage of allocs less than 48 bytes: 95.2

All allocations
# A tibble: 22 × 4
   obj_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
 1       9    37          37  0.0592
 2      10    10          47  0.0752
 3      11  1814        1861  2.98  
 4      12     1        1862  2.98  
 5      16  8908       10770 17.2   
 6      18   590       11360 18.2   
 7      19  2451       13811 22.1   
 8      20    17       13828 22.1   
 9      21    60       13888 22.2   
10      22    32       13920 22.3   
11      23    27       13947 22.3   
12      24 21747       35694 57.1   
13      25    55       35749 57.2   
14      26    50       35799 57.3   
15      27    75       35874 57.4   
16      28    24       35898 57.4   
17      29    28       35926 57.5   
18      30    24       35950 57.5   
19      31    14       35964 57.5   
20      32  7178       43142 69.0   
21      33    12       43154 69.0   
22      34     2       43156 69.0   
# A tibble: 5 × 4
  obj_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1    1024     8       62496    100.
2    1032     6       62502    100.
3    1041     1       62503    100.
4    4096     2       62505    100.
5    4113     2       62507    100 

Common Sizes
# A tibble: 8 × 2
  obj_len     n
    <int> <int>
1      24 21747
2      48 15735
3      16  8908
4      32  7178
5      19  2451
6      11  1814
7      64  1074
8      49   892

    62,507 total allocations, total bytes = 2,030,487

Typed allocations
# A tibble: 20 × 3
   func_name                                                           n percent
   <chr>                                                           <int>   <dbl>
 1 List<BigStr*>* Alloc<List<BigStr*>>()                            4658   11.3 
 2 List<runtime_asdl::part_value_t*>* Alloc<List<runtime_asdl::pa…  4086    9.88
 3 runtime_asdl::CommandStatus* Alloc<runtime_asdl::CommandStatus…  3186    7.70
 4 value_asdl::value__Str* Alloc<value_asdl::value__Str, BigStr*>…  2227    5.38
 5 syntax_asdl::word__String* Alloc<syntax_asdl::word__String, in…  1844    4.46
 6 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*&, bool…  1814    4.39
 7 runtime_asdl::VarSubState* Alloc<runtime_asdl::VarSubState, bo…  1814    4.39
 8 value_asdl::LeftName* Alloc<value_asdl::LeftName, BigStr*&, sy…  1803    4.36
 9 syntax_asdl::loc__Arith* Alloc<syntax_asdl::loc__Arith, syntax…  1780    4.30
10 value_asdl::value__Str* Alloc<value_asdl::value__Str, BigStr*&…   996    2.41
11 List<syntax_asdl::CompoundWord*>* Alloc<List<syntax_asdl::Comp…   981    2.37
12 List<int>* Alloc<List<int>>()                                     952    2.30
13 mylib::BufWriter* Alloc<mylib::BufWriter>()                       945    2.28
14 List<List<runtime_asdl::Piece*>*>* Alloc<List<List<runtime_asd…   932    2.25
15 List<Tuple2<runtime_asdl::span_e, int>*>* Alloc<List<Tuple2<ru…   932    2.25
16 List<mylib::BufWriter*>* Alloc<List<mylib::BufWriter*>>()         932    2.25
17 List<runtime_asdl::Piece*>* Alloc<List<runtime_asdl::Piece*>>()   932    2.25
18 Tuple2<runtime_asdl::span_e, int>* Alloc<Tuple2<runtime_asdl::…   932    2.25
19 syntax_asdl::loc__Word* Alloc<syntax_asdl::loc__Word, syntax_a…   922    2.23
20 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*, bool&…   890    2.15
# 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.00242
2 word_eval::CompletionWordEvaluator* Alloc<word_eval::Completion…     1 0.00242
3 word_eval::NormalWordEvaluator* Alloc<word_eval::NormalWordEval…     1 0.00242
4 word_eval::TildeEvaluator* Alloc<word_eval::TildeEvaluator, sta…     1 0.00242
5 word_parse::WordParser* Alloc<word_parse::WordParser, parse_lib…     1 0.00242

41,361 typed allocs, including 16,381 List<T>
66.17% 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   590         590    13.2
 2       2  2451        3041    67.9
 3       3    17        3058    68.3
 4       4    60        3118    69.6
 5       5    32        3150    70.3
 6       6    27        3177    70.9
 7       7    54        3231    72.1
 8       8    55        3286    73.3
 9       9    50        3336    74.5
10      10    75        3411    76.1
11      11    17        3428    76.5
12      12    28        3456    77.1
13      13    24        3480    77.7
14      14    14        3494    78.0
15      15     9        3503    78.2
16      16    12        3515    78.5
# A tibble: 5 × 4
  str_len     n n_less_than percent
    <int> <int>       <int>   <dbl>
1     134     1        4475    99.9
2     202     1        4476    99.9
3     255     1        4477    99.9
4    1024     1        4478   100. 
5    4096     2        4480   100  

4,480 string allocations, total length = 50,064, total bytes = 126,224

7.17% of allocs are strings
6.22% of bytes are strings

NewSlab()
  Lengths
# A tibble: 6 × 4
  slab_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
1        5 13984       13984    83.9
2        7   525       14509    87.1
3        8    49       14558    87.4
4       10  1086       15644    93.9
5       14    78       15722    94.3
6       15    53       15775    94.7
# A tibble: 5 × 4
  slab_len     n n_less_than percent
     <int> <int>       <int>   <dbl>
1      127    11       16621    99.7
2      128    36       16657    99.9
3      254     1       16658   100. 
4      256     6       16664   100. 
5     1022     2       16666   100  

  Slab Types
# A tibble: 6 × 2
  func_name                                                                    n
  <chr>                                                                    <int>
1 Slab<BigStr*>* NewSlab<BigStr*>(int)                                      4744
2 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>…  4086
3 Slab<int>* NewSlab<int>(int)                                              1623
4 Slab<syntax_asdl::CompoundWord*>* NewSlab<syntax_asdl::CompoundWord*>(i…  1422
5 Slab<List<runtime_asdl::Piece*>*>* NewSlab<List<runtime_asdl::Piece*>*>…   932
6 Slab<Tuple2<runtime_asdl::span_e, int>*>* NewSlab<Tuple2<runtime_asdl::…   932
# A tibble: 5 × 2
  func_name                                                                    n
  <chr>                                                                    <int>
1 Slab<syntax_asdl::debug_frame_t*>* NewSlab<syntax_asdl::debug_frame_t*>…     1
2 Slab<syntax_asdl::loc_t*>* NewSlab<syntax_asdl::loc_t*>(int)                 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

16,666 slabs, total items = 129,305
26.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.0154
 2         1 20651       20656 63.5   
 3         2  4247       24903 76.6   
 4         3  1684       26587 81.8   
 5         4  2401       28988 89.2   
 6         5  2724       31712 97.5   
 7         6   519       32231 99.1   
 8         7    25       32256 99.2   
 9         8    39       32295 99.3   
10         9    21       32316 99.4   
11        10    19       32335 99.4   
12        11    46       32381 99.6   
13        12     8       32389 99.6   
14        13     6       32395 99.6   
15        14     7       32402 99.7   
# A tibble: 5 × 4
  num_items     n n_less_than percent
      <int> <int>       <int>   <dbl>
1        63     1       32505    100.
2        64     5       32510    100.
3       107     2       32512    100.
4       179     1       32513    100.
5      1022     2       32515    100 

32,515 reserve() calls, total items = 67,160

Untyped: 62,507
Typed + Str + Slab: 62,507