Percentage of allocs less than 48 bytes: 91.1 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 7869 11996 10.8 7 18 17141 29137 26.3 8 19 807 29944 27.0 9 20 1502 31446 28.4 10 21 711 32157 29.0 11 22 519 32676 29.5 12 23 580 33256 30.0 13 24 29985 63241 57.0 14 25 2569 65810 59.3 15 26 1709 67519 60.9 16 27 184 67703 61.1 17 28 159 67862 61.2 18 29 157 68019 61.3 19 30 122 68141 61.4 20 31 104 68245 61.5 21 32 5307 73552 66.3 22 33 341 73893 66.6 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 110881 100. 2 1032 6 110887 100. 3 1041 1 110888 100. 4 4096 2 110890 100. 5 4113 2 110892 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 29985 2 48 21585 3 18 17141 4 16 7869 5 32 5307 6 40 4770 7 64 3418 8 9 3042 110,892 total allocations, total bytes = 3,938,658 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.15 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.43 # 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,381 typed allocs, including 18,242 List<T> 48.14% 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 17141 17416 60.4 3 2 807 18223 63.2 4 3 1429 19652 68.2 5 4 711 20363 70.6 6 5 519 20882 72.4 7 6 580 21462 74.4 8 7 493 21955 76.2 9 8 2569 24524 85.1 10 9 1709 26233 91.0 11 10 184 26417 91.6 12 11 152 26569 92.2 13 12 157 26726 92.7 14 13 122 26848 93.1 15 14 104 26952 93.5 16 15 77 27029 93.7 # A tibble: 5 × 4 str_len n n_less_than percent <int> <int> <int> <dbl> 1 160 1 28826 100. 2 202 1 28827 100. 3 255 1 28828 100. 4 1024 1 28829 100. 5 4096 2 28831 100 28,831 string allocations, total length = 149,639, total bytes = 639,766 26.00% of allocs are strings 16.24% 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 1003 51765 78.9 13 12 857 52622 80.2 14 13 829 53451 81.5 15 14 740 54191 82.6 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 77 15 65591 100. 2 78 8 65599 100. 3 113 2 65601 100. 4 179 1 65602 100. 5 1022 2 65604 100 65,604 reserve() calls, total items = 616,847 Untyped: 110,892 Typed + Str + Slab: 111,167