Percentage of allocs less than 48 bytes: 97.4 All allocations # A tibble: 22 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 9 37 37 0.0591 2 10 10 47 0.0751 3 11 1814 1861 2.97 4 12 1 1862 2.98 5 16 8938 10800 17.3 6 18 731 11531 18.4 7 19 2852 14383 23.0 8 20 67 14450 23.1 9 21 100 14550 23.2 10 22 82 14632 23.4 11 23 77 14709 23.5 12 24 21832 36541 58.4 13 25 96 36637 58.5 14 26 100 36737 58.7 15 27 95 36832 58.9 16 28 24 36856 58.9 17 29 28 36884 58.9 18 30 24 36908 59.0 19 31 14 36922 59.0 20 32 7178 44100 70.5 21 33 12 44112 70.5 22 34 2 44114 70.5 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 62572 100. 2 1032 6 62578 100. 3 1041 1 62579 100. 4 4096 2 62581 100. 5 4113 2 62583 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 21832 2 48 15739 3 16 8938 4 32 7178 5 19 2852 6 11 1814 7 64 1076 8 40 1055 62,583 total allocations, total bytes = 1,999,389 Typed allocations # A tibble: 20 × 3 func_name n percent <chr> <int> <dbl> 1 List<BigStr*>* Alloc<List<BigStr*>>() 4658 11.2 2 List<runtime_asdl::part_value_t*>* Alloc<List<runtime_asdl::pa… 4086 9.86 3 runtime_asdl::CommandStatus* Alloc<runtime_asdl::CommandStatus… 3186 7.69 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.45 6 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*&, bool… 1814 4.38 7 runtime_asdl::VarSubState* Alloc<runtime_asdl::VarSubState, bo… 1814 4.38 8 value_asdl::LeftName* Alloc<value_asdl::LeftName, BigStr*&, sy… 1803 4.35 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*&… 998 2.41 11 List<syntax_asdl::CompoundWord*>* Alloc<List<syntax_asdl::Comp… 981 2.37 12 List<int>* Alloc<List<int>>() 956 2.31 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.00241 2 word_eval::CompletionWordEvaluator* Alloc<word_eval::Completion… 1 0.00241 3 word_eval::NormalWordEvaluator* Alloc<word_eval::NormalWordEval… 1 0.00241 4 word_eval::TildeEvaluator* Alloc<word_eval::TildeEvaluator, sta… 1 0.00241 5 word_parse::WordParser* Alloc<word_parse::WordParser, parse_lib… 1 0.00241 41,428 typed allocs, including 16,385 List<T> 66.20% 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 731 731 16.3 2 2 2852 3583 79.9 3 3 67 3650 81.4 4 4 100 3750 83.6 5 5 82 3832 85.5 6 6 77 3909 87.2 7 7 104 4013 89.5 8 8 96 4109 91.7 9 9 100 4209 93.9 10 10 95 4304 96.0 11 11 17 4321 96.4 12 12 28 4349 97.0 13 13 24 4373 97.5 14 14 14 4387 97.9 15 15 9 4396 98.1 16 16 12 4408 98.3 # A tibble: 5 × 4 str_len n n_less_than percent <int> <int> <int> <dbl> 1 134 1 4478 99.9 2 202 1 4479 99.9 3 255 1 4480 99.9 4 1024 1 4481 100. 5 4096 2 4483 100 4,483 string allocations, total length = 24,715, total bytes = 100,926 7.16% of allocs are strings 5.05% of bytes are strings NewSlab() Lengths # A tibble: 6 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 5 13986 13986 83.9 2 7 527 14513 87.1 3 8 50 14563 87.4 4 10 1086 15649 93.9 5 14 78 15727 94.3 6 15 53 15780 94.6 # A tibble: 5 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 127 11 16627 99.7 2 128 36 16663 99.9 3 254 1 16664 100. 4 256 6 16670 100. 5 1022 2 16672 100 Slab Types # A tibble: 6 × 2 func_name n <chr> <int> 1 Slab<BigStr*>* NewSlab<BigStr*>(int) 4746 2 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>… 4086 3 Slab<int>* NewSlab<int>(int) 1625 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,672 slabs, total items = 129,353 26.64% 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 20652 20657 63.5 3 2 4247 24904 76.6 4 3 1684 26588 81.8 5 4 2401 28989 89.1 6 5 2724 31713 97.5 7 6 520 32233 99.1 8 7 25 32258 99.2 9 8 39 32297 99.3 10 9 21 32318 99.4 11 10 19 32337 99.4 12 11 47 32384 99.6 13 12 8 32392 99.6 14 13 6 32398 99.6 15 14 7 32405 99.7 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 63 1 32508 100. 2 64 5 32513 100. 3 113 2 32515 100. 4 179 1 32516 100. 5 1022 2 32518 100 32,518 reserve() calls, total items = 67,190 Untyped: 62,583 Typed + Str + Slab: 62,583