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