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