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.97 5 16 8939 10801 17.3 6 18 731 11532 18.4 7 19 2852 14384 23.0 8 20 67 14451 23.1 9 21 100 14551 23.2 10 22 82 14633 23.4 11 23 77 14710 23.5 12 24 21836 36546 58.4 13 25 96 36642 58.5 14 26 100 36742 58.7 15 27 95 36837 58.9 16 28 24 36861 58.9 17 29 28 36889 58.9 18 30 24 36913 59.0 19 31 14 36927 59.0 20 32 7178 44105 70.5 21 33 12 44117 70.5 22 34 2 44119 70.5 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 62581 100. 2 1032 6 62587 100. 3 1041 1 62588 100. 4 4096 2 62590 100. 5 4113 2 62592 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 21836 2 48 15742 3 16 8939 4 32 7178 5 19 2852 6 11 1814 7 64 1076 8 40 1056 62,592 total allocations, total bytes = 1,999,685 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.37 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,434 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 13988 13988 83.9 2 7 527 14515 87.0 3 8 51 14566 87.4 4 10 1086 15652 93.9 5 14 78 15730 94.3 6 15 53 15783 94.7 # A tibble: 5 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 127 11 16630 99.7 2 128 36 16666 99.9 3 254 1 16667 100. 4 256 6 16673 100. 5 1022 2 16675 100 Slab Types # A tibble: 6 × 2 func_name n <chr> <int> 1 Slab<BigStr*>* NewSlab<BigStr*>(int) 4747 2 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>… 4086 3 Slab<int>* NewSlab<int>(int) 1626 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,675 slabs, total items = 129,371 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 20653 20658 63.5 3 2 4247 24905 76.6 4 3 1684 26589 81.8 5 4 2401 28990 89.1 6 5 2724 31714 97.5 7 6 520 32234 99.1 8 7 25 32259 99.2 9 8 39 32298 99.3 10 9 21 32319 99.4 11 10 19 32338 99.4 12 11 47 32385 99.6 13 12 8 32393 99.6 14 13 6 32399 99.6 15 14 7 32406 99.7 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 63 1 32509 100. 2 64 5 32514 100. 3 113 2 32516 100. 4 179 1 32517 100. 5 1022 2 32519 100 32,519 reserve() calls, total items = 67,191 Untyped: 62,592 Typed + Str + Slab: 62,592