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 10835 10914 10.7 4 18 2916 13830 13.6 5 19 339 14169 13.9 6 20 408 14577 14.3 7 21 518 15095 14.8 8 22 648 15743 15.4 9 23 392 16135 15.8 10 24 31430 47565 46.7 11 25 283 47848 46.9 12 26 184 48032 47.1 13 27 218 48250 47.3 14 28 254 48504 47.6 15 29 131 48635 47.7 16 30 94 48729 47.8 17 31 83 48812 47.9 18 32 25022 73834 72.4 19 33 99 73933 72.5 20 34 70 74003 72.6 21 35 59 74062 72.6 22 36 72 74134 72.7 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 4096 3 101941 100. 2 4113 1 101942 100. 3 8192 1 101943 100. 4 16384 1 101944 100. 5 32768 1 101945 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 31430 2 32 25022 3 48 22725 4 16 10835 5 18 2916 6 56 1241 7 40 811 8 64 760 101,945 total allocations, total bytes = 3,446,106 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,185 typed allocs, including 29,371 List<T> 68.85% 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.50% 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 124 36788 91.4 13 12 76 36864 91.6 14 13 63 36927 91.8 15 14 51 36978 91.9 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 2508 1 40236 100. 2 2509 1 40237 100. 3 2510 1 40238 100. 4 2511 1 40239 100. 5 2512 1 40240 100 40,240 reserve() calls, total items = 3,264,993 Untyped: 101,945 Typed + Str + Slab: 101,945