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