Percentage of allocs less than 48 bytes: 92.0 All allocations # A tibble: 22 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 9 39 39 0.0244 2 10 2 41 0.0257 3 11 2005 2046 1.28 4 12 1 2047 1.28 5 16 14766 16813 10.5 6 18 314 17127 10.7 7 19 2366 19493 12.2 8 20 3615 23108 14.5 9 21 4076 27184 17.0 10 22 1036 28220 17.7 11 23 1025 29245 18.3 12 24 51158 80403 50.3 13 25 1059 81462 51.0 14 26 4045 85507 53.5 15 27 32 85539 53.5 16 28 26 85565 53.5 17 29 29 85594 53.6 18 30 26 85620 53.6 19 31 17 85637 53.6 20 32 14255 99892 62.5 21 33 10 99902 62.5 22 34 3 99905 62.5 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 159777 100. 2 1032 6 159783 100. 3 1041 1 159784 100. 4 4096 2 159786 100. 5 4113 2 159788 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 51158 2 48 42988 3 16 14766 4 32 14255 5 64 4167 6 40 4108 7 21 4076 8 26 4045 159,788 total allocations, total bytes = 6,304,937 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.95 3 runtime_asdl::CommandStatus* Alloc<runtime_asdl::CommandStatus… 5010 5.60 4 runtime_asdl::Piece* Alloc<runtime_asdl::Piece, BigStr*, bool&… 5003 5.59 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>>() 3021 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*&… 2046 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,469 typed allocs, including 41,733 List<T> 55.99% 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 314 314 1.76 2 2 2366 2680 15.1 3 3 3615 6295 35.4 4 4 4076 10371 58.3 5 5 1036 11407 64.1 6 6 1025 12432 69.8 7 7 53 12485 70.1 8 8 1059 13544 76.1 9 9 4045 17589 98.8 10 10 32 17621 99.0 11 11 17 17638 99.1 12 12 29 17667 99.3 13 13 26 17693 99.4 14 14 17 17710 99.5 15 15 7 17717 99.5 16 16 10 17727 99.6 # A tibble: 5 × 4 str_len n n_less_than percent <int> <int> <int> <dbl> 1 134 1 17794 100. 2 202 1 17795 100. 3 255 1 17796 100. 4 1024 1 17797 100. 5 4096 2 17799 100 17,799 string allocations, total length = 102,508, total bytes = 405,091 11.14% of allocs are strings 6.42% of bytes are strings NewSlab() Lengths # A tibble: 6 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 5 36662 36662 69.8 2 7 3078 39740 75.7 3 8 1044 40784 77.7 4 10 3153 43937 83.7 5 14 78 44015 83.8 6 15 2064 46079 87.7 # A tibble: 5 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 127 11 52475 99.9 2 128 36 52511 100. 3 254 1 52512 100. 4 256 6 52518 100. 5 1022 2 52520 100 Slab Types # A tibble: 6 × 2 func_name n <chr> <int> 1 Slab<BigStr*>* NewSlab<BigStr*>(int) 18192 2 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>… 8010 3 Slab<int>* NewSlab<int>(int) 7696 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,520 slabs, total items = 515,209 32.87% 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.00954 2 1 46592 46601 49.4 3 2 13221 59822 63.4 4 3 10027 69849 74.1 5 4 11087 80936 85.8 6 5 5048 85984 91.2 7 6 3056 89040 94.4 8 7 1017 90057 95.5 9 8 2035 92092 97.7 10 9 1013 93105 98.7 11 10 8 93113 98.7 12 11 46 93159 98.8 13 12 7 93166 98.8 14 13 5 93171 98.8 15 14 6 93177 98.8 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 63 1 94286 100. 2 64 5 94291 100. 3 113 2 94293 100. 4 179 1 94294 100. 5 1022 2 94296 100 94,296 reserve() calls, total items = 245,556 Untyped: 159,788 Typed + Str + Slab: 159,788