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 8933 10795 17.3 6 18 731 11526 18.4 7 19 2852 14378 23.0 8 20 67 14445 23.1 9 21 100 14545 23.2 10 22 82 14627 23.4 11 23 77 14704 23.5 12 24 21832 36536 58.4 13 25 96 36632 58.5 14 26 100 36732 58.7 15 27 95 36827 58.9 16 28 24 36851 58.9 17 29 28 36879 58.9 18 30 24 36903 59.0 19 31 14 36917 59.0 20 32 7178 44095 70.5 21 33 12 44107 70.5 22 34 2 44109 70.5 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 62560 100. 2 1032 6 62566 100. 3 1041 1 62567 100. 4 4096 2 62569 100. 5 4113 2 62571 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 21832 2 48 15736 3 16 8933 4 32 7178 5 19 2852 6 11 1814 7 64 1074 8 40 1054 62,571 total allocations, total bytes = 1,998,925 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,422 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 13984 13984 83.9 2 7 525 14509 87.1 3 8 49 14558 87.4 4 10 1086 15644 93.9 5 14 78 15722 94.3 6 15 53 15775 94.7 # A tibble: 5 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 127 11 16621 99.7 2 128 36 16657 99.9 3 254 1 16658 100. 4 256 6 16664 100. 5 1022 2 16666 100 Slab Types # A tibble: 6 × 2 func_name n <chr> <int> 1 Slab<BigStr*>* NewSlab<BigStr*>(int) 4744 2 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>… 4086 3 Slab<int>* NewSlab<int>(int) 1623 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,666 slabs, total items = 129,305 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 20651 20656 63.5 3 2 4247 24903 76.6 4 3 1684 26587 81.8 5 4 2401 28988 89.1 6 5 2724 31712 97.5 7 6 519 32231 99.1 8 7 25 32256 99.2 9 8 39 32295 99.3 10 9 21 32316 99.4 11 10 19 32335 99.4 12 11 47 32382 99.6 13 12 8 32390 99.6 14 13 6 32396 99.6 15 14 7 32403 99.7 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 63 1 32506 100. 2 64 5 32511 100. 3 113 2 32513 100. 4 179 1 32514 100. 5 1022 2 32516 100 32,516 reserve() calls, total items = 67,183 Untyped: 62,571 Typed + Str + Slab: 62,571