Percentage of allocs less than 48 bytes: 90.7 All allocations # A tibble: 22 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 9 3042 3042 2.74 2 10 73 3115 2.81 3 11 1002 4117 3.71 4 12 9 4126 3.72 5 13 1 4127 3.72 6 16 7865 11992 10.8 7 18 17139 29131 26.3 8 19 807 29938 27.0 9 20 1502 31440 28.4 10 21 711 32151 29.0 11 22 519 32670 29.5 12 23 580 33250 30.0 13 24 29978 63228 57.0 14 25 2568 65796 59.3 15 26 1709 67505 60.9 16 27 184 67689 61.0 17 28 159 67848 61.2 18 29 157 68005 61.3 19 30 122 68127 61.4 20 31 104 68231 61.5 21 32 5307 73538 66.3 22 33 341 73879 66.6 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 110867 100. 2 1032 6 110873 100. 3 1041 1 110874 100. 4 4096 2 110876 100. 5 4113 2 110878 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 29978 2 48 21585 3 18 17139 4 16 7865 5 32 5307 6 40 4239 7 64 3419 8 9 3042 110,878 total allocations, total bytes = 3,946,845 Typed allocations # A tibble: 20 × 3 func_name n percent <chr> <int> <dbl> 1 List<BigStr*>* Alloc<List<BigStr*>>() 6457 12.1 2 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*, bool&… 4353 8.16 3 List<runtime_asdl::part_value_t*>* Alloc<List<runtime_asdl::pa… 3518 6.59 4 runtime_asdl::CommandStatus* Alloc<runtime_asdl::CommandStatus… 2971 5.57 5 value_asdl::value__Bool* Alloc<value_asdl::value__Bool, bool&>… 2738 5.13 6 Tuple2<runtime_asdl::span_e, int>* Alloc<Tuple2<runtime_asdl::… 2733 5.12 7 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*&, bool… 1925 3.61 8 List<syntax_asdl::CompoundWord*>* Alloc<List<syntax_asdl::Comp… 1659 3.11 9 value_asdl::value__Str* Alloc<value_asdl::value__Str, BigStr*>… 1647 3.09 10 List<int>* Alloc<List<int>>() 1080 2.02 11 runtime_asdl::VarSubState* Alloc<runtime_asdl::VarSubState, bo… 1002 1.88 12 List<runtime_asdl::Piece*>* Alloc<List<runtime_asdl::Piece*>>() 956 1.79 13 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*&, bool… 925 1.73 14 Dict<BigStr*, value_asdl::value_t*>* Alloc<Dict<BigStr*, value… 908 1.70 15 Dict<BigStr*, args::_Action*>* Alloc<Dict<BigStr*, args::_Acti… 906 1.70 16 List<Tuple2<BigStr*, bool>*>* Alloc<List<Tuple2<BigStr*, bool>… 906 1.70 17 args::SetToInt* Alloc<args::SetToInt, BigStr*>(BigStr*&&) 901 1.69 18 value_asdl::value__Int* Alloc<value_asdl::value__Int, int&>(in… 901 1.69 19 value_asdl::value__Str* Alloc<value_asdl::value__Str, BigStr*&… 871 1.63 20 args::SetToString* Alloc<args::SetToString, BigStr*, bool, Lis… 766 1.44 # 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.00187 2 value_asdl::value__List* Alloc<value_asdl::value__List, List<va… 1 0.00187 3 word_eval::CompletionWordEvaluator* Alloc<word_eval::Completion… 1 0.00187 4 word_eval::NormalWordEvaluator* Alloc<word_eval::NormalWordEval… 1 0.00187 5 word_eval::TildeEvaluator* Alloc<word_eval::TildeEvaluator, sta… 1 0.00187 53,370 typed allocs, including 18,242 List<T> 48.13% of allocs are typed Str - NewStr() and OverAllocatedStr() # A tibble: 16 × 4 str_len n n_less_than percent <int> <int> <int> <dbl> 1 0 275 275 0.954 2 1 17139 17414 60.4 3 2 807 18221 63.2 4 3 1429 19650 68.2 5 4 711 20361 70.6 6 5 519 20880 72.4 7 6 580 21460 74.4 8 7 493 21953 76.2 9 8 2568 24521 85.1 10 9 1709 26230 91.0 11 10 184 26414 91.6 12 11 152 26566 92.2 13 12 157 26723 92.7 14 13 122 26845 93.1 15 14 104 26949 93.5 16 15 77 27026 93.7 # A tibble: 5 × 4 str_len n n_less_than percent <int> <int> <int> <dbl> 1 160 1 28823 100. 2 202 1 28824 100. 3 255 1 28825 100. 4 1024 1 28826 100. 5 4096 2 28828 100 28,828 string allocations, total length = 149,629, total bytes = 639,705 26.00% of allocs are strings 16.21% of bytes are strings NewSlab() Lengths # A tibble: 6 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 5 16803 16803 58.0 2 7 3043 19846 68.5 3 8 1530 21376 73.8 4 10 1156 22532 77.8 5 14 349 22881 79.0 6 15 2423 25304 87.4 # A tibble: 5 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 127 11 28910 99.8 2 128 36 28946 100. 3 254 1 28947 100. 4 256 6 28953 100. 5 1022 2 28955 100 Slab Types # A tibble: 6 × 2 func_name n <chr> <int> 1 Slab<BigStr*>* NewSlab<BigStr*>(int) 9574 2 Slab<int>* NewSlab<int>(int) 5675 3 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>… 4129 4 Slab<value_asdl::value_t*>* NewSlab<value_asdl::value_t*>(int) 2430 5 Slab<syntax_asdl::CompoundWord*>* NewSlab<syntax_asdl::CompoundWord*>(i… 1778 6 Slab<runtime_asdl::Piece*>* NewSlab<runtime_asdl::Piece*>(int) 956 # A tibble: 5 × 2 func_name n <chr> <int> 1 Slab<syntax_asdl::printf_part_t*>* NewSlab<syntax_asdl::printf_part_t*>… 1 2 Slab<value_asdl::regex_match_t*>* NewSlab<value_asdl::regex_match_t*>(i… 1 3 Slab<value_asdl::value__Dict*>* NewSlab<value_asdl::value__Dict*>(int) 1 4 Slab<value_asdl::value__Proc*>* NewSlab<value_asdl::value__Proc*>(int) 1 5 Slab<vm::_AssignBuiltin*>* NewSlab<vm::_AssignBuiltin*>(int) 1 28,955 slabs, total items = 300,233 26.11% 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.00762 2 1 18676 18681 28.5 3 2 7001 25682 39.1 4 3 5722 31404 47.9 5 4 3314 34718 52.9 6 5 3244 37962 57.9 7 6 3352 41314 63.0 8 7 2515 43829 66.8 9 8 3136 46965 71.6 10 9 1799 48764 74.3 11 10 1998 50762 77.4 12 11 1002 51764 78.9 13 12 857 52621 80.2 14 13 829 53450 81.5 15 14 740 54190 82.6 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 77 15 65590 100. 2 78 8 65598 100. 3 111 2 65600 100. 4 179 1 65601 100. 5 1022 2 65603 100 65,603 reserve() calls, total items = 616,832 Untyped: 110,878 Typed + Str + Slab: 111,153