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 14765 16812 10.5 6 18 314 17126 10.7 7 19 2366 19492 12.2 8 20 3615 23107 14.5 9 21 4076 27183 17.0 10 22 1036 28219 17.7 11 23 1025 29244 18.3 12 24 51154 80398 50.3 13 25 1059 81457 51.0 14 26 4045 85502 53.5 15 27 32 85534 53.5 16 28 26 85560 53.5 17 29 29 85589 53.6 18 30 26 85615 53.6 19 31 17 85632 53.6 20 32 14255 99887 62.5 21 33 10 99897 62.5 22 34 3 99900 62.5 # A tibble: 5 × 4 obj_len n n_less_than percent <int> <int> <int> <dbl> 1 1024 8 159768 100. 2 1032 6 159774 100. 3 1041 1 159775 100. 4 4096 2 159777 100. 5 4113 2 159779 100 Common Sizes # A tibble: 8 × 2 obj_len n <int> <int> 1 24 51154 2 48 42985 3 16 14765 4 32 14255 5 64 4167 6 40 4107 7 21 4076 8 26 4045 159,779 total allocations, total bytes = 6,304,641 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,463 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.43% of bytes are strings NewSlab() Lengths # A tibble: 6 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 5 36660 36660 69.8 2 7 3078 39738 75.7 3 8 1043 40781 77.7 4 10 3153 43934 83.7 5 14 78 44012 83.8 6 15 2064 46076 87.7 # A tibble: 5 × 4 slab_len n n_less_than percent <int> <int> <int> <dbl> 1 127 11 52472 99.9 2 128 36 52508 100. 3 254 1 52509 100. 4 256 6 52515 100. 5 1022 2 52517 100 Slab Types # A tibble: 6 × 2 func_name n <chr> <int> 1 Slab<BigStr*>* NewSlab<BigStr*>(int) 18191 2 Slab<runtime_asdl::part_value_t*>* NewSlab<runtime_asdl::part_value_t*>… 8010 3 Slab<int>* NewSlab<int>(int) 7695 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,517 slabs, total items = 515,191 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 46591 46600 49.4 3 2 13221 59821 63.4 4 3 10027 69848 74.1 5 4 11087 80935 85.8 6 5 5048 85983 91.2 7 6 3056 89039 94.4 8 7 1017 90056 95.5 9 8 2035 92091 97.7 10 9 1013 93104 98.7 11 10 8 93112 98.7 12 11 46 93158 98.8 13 12 7 93165 98.8 14 13 5 93170 98.8 15 14 6 93176 98.8 # A tibble: 5 × 4 num_items n n_less_than percent <int> <int> <int> <dbl> 1 63 1 94285 100. 2 64 5 94290 100. 3 113 2 94292 100. 4 179 1 94293 100. 5 1022 2 94295 100 94,295 reserve() calls, total items = 245,555 Untyped: 159,779 Typed + Str + Slab: 159,779