Percentage of allocs less than 48 bytes: 90.1 All allocations # A tibble: 22 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 9 35 35 0.0219 2 10 2 37 0.0232 3 11 2005 2042 1.28 4 12 1 2043 1.28 5 16 14735 16778 10.5 6 18 291 17069 10.7 7 19 2276 19345 12.1 8 20 2715 22060 13.8 9 21 4075 26135 16.4 10 22 1036 27171 17.0 11 23 1025 28196 17.7 12 24 51121 79317 49.7 13 25 1058 80375 50.3 14 26 4045 84420 52.9 15 27 32 84452 52.9 16 28 26 84478 52.9 17 29 29 84507 52.9 18 30 26 84533 52.9 19 31 17 84550 52.9 20 32 14255 98805 61.9 21 33 10 98815 61.9 22 34 3 98818 61.9 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 159676 100. 2 1032 6 159682 100. 3 1041 1 159683 100. 4 4096 2 159685 100. 5 4113 2 159687 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 51121 2 48 42983 3 16 14735 4 32 14255 5 64 4165 6 21 4075 7 26 4045 8 20 2715 159,687 total allocations, total bytes = 6,363,539 Typed allocations # A tibble: 20 × 3 func_name n percent <chr> <int> <dbl> 1 List<BigStr*>* Alloc<List<BigStr*>>() 10089 11.3 2 List<runtime_asdl::part_value_t*>* Alloc<List<runtime_asdl::pa… 8010 8.96 3 runtime_asdl::CommandStatus* Alloc<runtime_asdl::CommandStatus… 5010 5.60 4 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*, bool&… 5003 5.60 5 List<syntax_asdl::CompoundWord*>* Alloc<List<syntax_asdl::Comp… 4043 4.52 6 syntax_asdl::word__String* Alloc<syntax_asdl::word__String, in… 4004 4.48 7 List<int>* Alloc<List<int>>() 3019 3.38 8 mylib::BufWriter* Alloc<mylib::BufWriter>() 3007 3.36 9 List<List<runtime_asdl::Piece*>*>* Alloc<List<List<runtime_asd… 3004 3.36 10 List<runtime_asdl::Piece*>* Alloc<List<runtime_asdl::Piece*>>() 3004 3.36 11 List<Tuple2<runtime_asdl::span_e, int>*>* Alloc<List<Tuple2<ru… 3002 3.36 12 List<mylib::BufWriter*>* Alloc<List<mylib::BufWriter*>>() 3002 3.36 13 Tuple2<runtime_asdl::span_e, int>* Alloc<Tuple2<runtime_asdl::… 3002 3.36 14 value_asdl::value__Str* Alloc<value_asdl::value__Str, BigStr*&… 2044 2.29 15 runtime_asdl::VarSubState* Alloc<runtime_asdl::VarSubState, bo… 2005 2.24 16 runtime_asdl::cmd_value__Argv* Alloc<runtime_asdl::cmd_value__… 2004 2.24 17 value_asdl::value__Str* Alloc<value_asdl::value__Str, BigStr*>… 2004 2.24 18 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*&, bool… 2003 2.24 19 syntax_asdl::loc__Word* Alloc<syntax_asdl::loc__Word, syntax_a… 2002 2.24 20 syntax_asdl::loc__Arith* Alloc<syntax_asdl::loc__Arith, syntax… 2000 2.24 # A tibble: 5 × 3 func_name n percent <chr> <int> <dbl> 1 value_asdl::value__Proc* Alloc<value_asdl::value__Proc, BigStr*… 1 0.00112 2 word_eval::CompletionWordEvaluator* Alloc<word_eval::Completion… 1 0.00112 3 word_eval::NormalWordEvaluator* Alloc<word_eval::NormalWordEval… 1 0.00112 4 word_eval::TildeEvaluator* Alloc<word_eval::TildeEvaluator, sta… 1 0.00112 5 word_parse::WordParser* Alloc<word_parse::WordParser, parse_lib… 1 0.00112 89,394 typed allocs, including 41,731 List<T> 55.98% 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 291 291 1.64 2 2 2276 2567 14.4 3 3 2715 5282 29.7 4 4 4075 9357 52.6 5 5 1036 10393 58.4 6 6 1025 11418 64.2 7 7 53 11471 64.5 8 8 1058 12529 70.5 9 9 4045 16574 93.2 10 10 32 16606 93.4 11 11 17 16623 93.5 12 12 29 16652 93.6 13 13 26 16678 93.8 14 14 17 16695 93.9 15 15 7 16702 93.9 16 16 10 16712 94.0 # A tibble: 5 × 4 str_len n n_less_than percent <int> <int> <int> <dbl> 1 134 1 17779 100. 2 202 1 17780 100. 3 255 1 17781 100. 4 1024 1 17782 100. 5 4096 2 17784 100 17,784 string allocations, total length = 131,593, total bytes = 433,921 11.14% of allocs are strings 6.82% of bytes are strings NewSlab() Lengths # A tibble: 6 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 5 36658 36658 69.8 2 7 3076 39734 75.7 3 8 1042 40776 77.7 4 10 3153 43929 83.7 5 14 78 44007 83.8 6 15 2062 46069 87.7 # A tibble: 5 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 127 11 52464 99.9 2 128 36 52500 100. 3 254 1 52501 100. 4 256 6 52507 100. 5 1022 2 52509 100 Slab Types # A tibble: 6 × 2 func_name n <chr> <int> 1 Slab<BigStr*>* NewSlab<BigStr*>(int) 18187 2 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>… 8010 3 Slab<int>* NewSlab<int>(int) 7693 4 Slab<syntax_asdl::CompoundWord*>* NewSlab<syntax_asdl::CompoundWord*>(i… 5033 5 Slab<List<runtime_asdl::Piece*>*>* NewSlab<List<runtime_asdl::Piece*>*>… 3004 6 Slab<runtime_asdl::Piece*>* NewSlab<runtime_asdl::Piece*>(int) 3003 # A tibble: 5 × 2 func_name n <chr> <int> 1 Slab<syntax_asdl::loc_t*>* NewSlab<syntax_asdl::loc_t*>(int) 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 52,509 slabs, total items = 515,113 32.88% 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 9 9 0.00955 2 1 46590 46599 49.4 3 2 13221 59820 63.4 4 3 10027 69847 74.1 5 4 11087 80934 85.8 6 5 5048 85982 91.2 7 6 3055 89037 94.4 8 7 1017 90054 95.5 9 8 2033 92087 97.7 10 9 1011 93098 98.7 11 10 8 93106 98.7 12 11 45 93151 98.8 13 12 7 93158 98.8 14 13 5 93163 98.8 15 14 6 93169 98.8 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 63 1 94278 100. 2 64 5 94283 100. 3 107 2 94285 100. 4 179 1 94286 100. 5 1022 2 94288 100 94,288 reserve() calls, total items = 245,491 Untyped: 159,687 Typed + Str + Slab: 159,687