Skip to content

Conversation

@meooow25
Copy link
Contributor

@meooow25 meooow25 commented Oct 26, 2024

Closes #1053

Benchmarks, using GHC 9.10.1:

Set:

Expand
Name                            Time - - - - - - - -    Allocated - - - - -
                                     A       B     %         A       B     %
alterF:delete                   845 ÎĽs  648 ÎĽs  -23%    2.2 MB  2.2 MB   +0%
alterF:four                     1.1 ms  870 ÎĽs  -21%    3.1 MB  3.1 MB   +0%
alterF:four:strings             1.8 ms  1.5 ms  -12%    3.1 MB  3.1 MB   +0%
alterF:insert                   938 ÎĽs  726 ÎĽs  -22%    2.8 MB  2.8 MB   +0%
alterF:member                   945 ÎĽs  726 ÎĽs  -23%    2.5 MB  2.5 MB   +0%
alterF_naive:four               1.6 ms  1.4 ms  -11%    2.2 MB  2.2 MB   +0%
alterF_naive:four:strings       3.9 ms  3.8 ms   -4%    2.2 MB  2.2 MB   +0%
compare                          37 ÎĽs   38 ÎĽs   +2%    128 KB  128 KB   +0%
delete                          793 ÎĽs  621 ÎĽs  -21%    1.6 MB  1.6 MB   +0%
deleteMax                        94 ns   47 ns  -50%    512 B   512 B    +0%
deleteMin                        83 ns   42 ns  -49%    472 B   472 B    +0%
difference                      179 ÎĽs  161 ÎĽs   -9%    436 KB  436 KB   +0%
disjoint:false                  722 ns  633 ns  -12%    2.3 KB  2.3 KB   +0%
disjoint:true                   125 ÎĽs  118 ÎĽs   -5%    246 KB  246 KB   +0%
eq                               37 ÎĽs   38 ÎĽs   +0%    128 KB  128 KB   +0%
filter                           87 ÎĽs   83 ÎĽs   -4%    121 KB  121 KB   +0%
findMax                          15 ns   15 ns   +0%     32 B    32 B    +0%
findMin                          14 ns   14 ns   +0%     32 B    32 B    +0%
folds.foldMap_elem              9.6 ÎĽs   10 ÎĽs   +3%     34 B    34 B    +0%
folds.foldMap_traverseSum       8.7 ÎĽs  8.6 ÎĽs   -1%     36 KB   36 KB   +0%
folds.foldl'_sum                 11 ÎĽs   11 ÎĽs   +2%     42 B    45 B    +7%
folds.foldl_cpsOneShotSum        34 ÎĽs   34 ÎĽs   -1%    192 KB  192 KB   +0%
folds.foldl_cpsSum               53 ÎĽs   53 ÎĽs   +0%    288 KB  288 KB   +0%
folds.foldl_elem                 23 ÎĽs   23 ÎĽs   +0%    160 KB  160 KB   +0%
folds.foldl_traverseSum          53 ÎĽs   53 ÎĽs   +0%    288 KB  288 KB   +0%
folds.foldr'_sum                 11 ÎĽs   12 ÎĽs   +4%     41 B    41 B    +0%
folds.foldr_cpsOneShotSum        34 ÎĽs   34 ÎĽs   +0%    192 KB  192 KB   +0%
folds.foldr_cpsSum               54 ÎĽs   53 ÎĽs   +0%    288 KB  288 KB   +0%
folds.foldr_elem                 23 ÎĽs   24 ÎĽs   +2%    160 KB  160 KB   +0%
folds.foldr_traverseSum          53 ÎĽs   56 ÎĽs   +6%    288 KB  288 KB   +0%
fromAscList                      20 ÎĽs   19 ÎĽs   -2%    176 KB  176 KB   +0%
fromAscList:fusion               13 ÎĽs   12 ÎĽs   -3%    192 KB  192 KB   +0%
fromDescList                     19 ÎĽs   18 ÎĽs   -2%    176 KB  176 KB   +0%
fromDescList:fusion              45 ÎĽs   44 ÎĽs   -1%    560 KB  560 KB   +0%
fromDistinctAscList              27 ÎĽs   26 ÎĽs   -3%    225 KB  225 KB   +0%
fromDistinctAscList:fusion       18 ÎĽs   18 ÎĽs   -1%    288 KB  288 KB   +0%
fromDistinctDescList             28 ÎĽs   28 ÎĽs   +2%    225 KB  225 KB   +0%
fromDistinctDescList:fusion      18 ÎĽs   18 ÎĽs   -2%    289 KB  289 KB   +0%
fromList                        820 ÎĽs  636 ÎĽs  -22%    2.0 MB  2.0 MB   +0%
fromList-distinctAsc             29 ÎĽs   28 ÎĽs   -3%    256 KB  256 KB   +0%
fromList-distinctAsc:fusion      29 ÎĽs   28 ÎĽs   -2%    417 KB  417 KB   +0%
fromList-distinctDesc           576 ÎĽs  328 ÎĽs  -43%    2.6 MB  2.6 MB   +0%
fromList-distinctDesc:fusion    621 ÎĽs  382 ÎĽs  -38%    2.9 MB  2.9 MB   +0%
insert                          809 ÎĽs  657 ÎĽs  -18%    2.0 MB  2.0 MB   +0%
intersection                    181 ÎĽs  178 ÎĽs   -1%    333 KB  333 KB   +0%
map:asc                          73 ÎĽs   75 ÎĽs   +2%    417 KB  417 KB   +0%
map:desc                        639 ÎĽs  413 ÎĽs  -35%    2.7 MB  2.7 MB   +0%
member                          265 ÎĽs  270 ÎĽs   +1%    221 B   130 B   -41%
member.powerSet (14)             12 ms   12 ms   +0%     32 MB   32 MB   +0%
member.powerSet (15)             27 ms   28 ms   +0%     73 MB   73 MB   +0%
null.intersection:false         184 ÎĽs  174 ÎĽs   -5%    333 KB  333 KB   +0%
null.intersection:true          118 ÎĽs  115 ÎĽs   -2%    314 KB  314 KB   +0%
partition                       134 ÎĽs  127 ÎĽs   -5%    239 KB  239 KB   +0%
powerSet (15)                   8.2 ms  8.2 ms   +0%    7.5 MB  7.5 MB   +0%
powerSet (16)                    22 ms   22 ms   +0%     15 MB   15 MB   +0%
union                           129 ÎĽs  125 ÎĽs   -2%    488 KB  488 KB   +0%
unions                          128 ÎĽs  125 ÎĽs   -2%    488 KB  488 KB   +0%

Map:

Expand
Name                                  Time - - - - - - - -    Allocated - - - - -
                                           A       B     %         A       B     %
<$                                     28 ÎĽs   29 ÎĽs   +2%    192 KB  192 KB   +0%
<$ really                              68 ÎĽs   70 ÎĽs   +2%    192 KB  192 KB   +0%
alter absent                          403 ÎĽs  328 ÎĽs  -18%    1.1 MB  1.1 MB   +0%
alter delete                          469 ÎĽs  382 ÎĽs  -18%    1.1 MB  1.1 MB   +0%
alter insert                          422 ÎĽs  338 ÎĽs  -19%    1.2 MB  1.2 MB   +0%
alter update                          350 ÎĽs  276 ÎĽs  -21%    1.0 MB  1.0 MB   +0%
alterF alter absent                   237 ÎĽs  240 ÎĽs   +1%    270 B   281 B    +4%
alterF alter delete                   534 ÎĽs  437 ÎĽs  -18%    1.4 MB  1.4 MB   +0%
alterF alter insert                   491 ÎĽs  402 ÎĽs  -18%    1.6 MB  1.6 MB   +0%
alterF alter update                   284 ÎĽs  287 ÎĽs   +1%    1.4 MB  1.4 MB   +0%
alterF delete absent                  228 ÎĽs  233 ÎĽs   +2%    141 B   141 B    +0%
alterF delete present                 502 ÎĽs  414 ÎĽs  -17%    1.4 MB  1.4 MB   +0%
alterF insert absent                  506 ÎĽs  396 ÎĽs  -21%    1.7 MB  1.7 MB   +0%
alterF insert present                 288 ÎĽs  289 ÎĽs   +0%    1.4 MB  1.4 MB   +0%
alterF lookup absent                  129 ÎĽs  129 ÎĽs   +0%    163 B   165 B    +1%
alterF lookup present                 123 ÎĽs  124 ÎĽs   +0%     32 KB   32 KB   +0%
alterF no rules alter absent          140 ÎĽs  142 ÎĽs   +1%     82 B   153 B   +86%
alterF no rules alter delete          589 ÎĽs  516 ÎĽs  -12%    1.1 MB  1.1 MB   +0%
alterF no rules alter insert          550 ÎĽs  458 ÎĽs  -16%    1.2 MB  1.2 MB   +0%
alterF no rules alter update          350 ÎĽs  357 ÎĽs   +1%    1.0 MB  1.0 MB   +0%
alterF no rules delete absent         138 ÎĽs  144 ÎĽs   +3%    152 B    82 B   -46%
alterF no rules delete present        563 ÎĽs  491 ÎĽs  -12%    1.1 MB  1.1 MB   +0%
alterF no rules insert absent         553 ÎĽs  459 ÎĽs  -17%    1.3 MB  1.3 MB   +0%
alterF no rules insert present        346 ÎĽs  350 ÎĽs   +1%    1.1 MB  1.1 MB   +0%
alterF no rules lookup absent         140 ÎĽs  141 ÎĽs   +0%     98 B   162 B   +65%
alterF no rules lookup present        132 ÎĽs  130 ÎĽs   -1%     32 KB   32 KB   +0%
compare                                49 ÎĽs   48 ÎĽs   -1%    160 KB  160 KB   +0%
delete absent                         219 ÎĽs  230 ÎĽs   +4%    141 B   149 B    +5%
delete present                        455 ÎĽs  377 ÎĽs  -17%    1.1 MB  1.1 MB   +0%
difference                            184 ÎĽs  168 ÎĽs   -8%    524 KB  524 KB   +0%
eq                                     47 ÎĽs   45 ÎĽs   -3%    160 KB  160 KB   +0%
folds with key.foldMap_elem            11 ÎĽs   11 ÎĽs   -4%     33 B    32 B    -3%
folds with key.foldMap_traverseSum     13 ÎĽs   13 ÎĽs   -1%     36 KB   36 KB   +0%
folds with key.foldl'_sum              15 ÎĽs   14 ÎĽs   -5%     43 B    47 B    +9%
folds with key.foldl_cpsOneShotSum     47 ÎĽs   48 ÎĽs   +1%    384 KB  384 KB   +0%
folds with key.foldl_cpsSum            85 ÎĽs   86 ÎĽs   +1%    608 KB  608 KB   +0%
folds with key.foldl_elem              32 ÎĽs   33 ÎĽs   +3%    192 KB  192 KB   +0%
folds with key.foldl_traverseSum       76 ÎĽs   77 ÎĽs   +2%    480 KB  480 KB   +0%
folds with key.foldr'_sum              14 ÎĽs   14 ÎĽs   +0%     47 B    47 B    +0%
folds with key.foldr_cpsOneShotSum     48 ÎĽs   47 ÎĽs   -1%    384 KB  384 KB   +0%
folds with key.foldr_cpsSum            86 ÎĽs   86 ÎĽs   +0%    608 KB  608 KB   +0%
folds with key.foldr_elem              32 ÎĽs   32 ÎĽs   -1%    192 KB  192 KB   +0%
folds with key.foldr_traverseSum       78 ÎĽs   76 ÎĽs   -1%    480 KB  480 KB   +0%
folds.foldMap_elem                     12 ÎĽs   12 ÎĽs   +0%     39 B    39 B    +0%
folds.foldMap_traverseSum              21 ÎĽs   21 ÎĽs   -2%     64 KB   64 KB   +0%
folds.foldl'_sum                       12 ÎĽs   12 ÎĽs   -1%     47 B    47 B    +0%
folds.foldl_cpsOneShotSum              45 ÎĽs   46 ÎĽs   +1%    320 KB  320 KB   +0%
folds.foldl_cpsSum                     69 ÎĽs   70 ÎĽs   +1%    416 KB  416 KB   +0%
folds.foldl_elem                       29 ÎĽs   30 ÎĽs   +2%    160 KB  160 KB   +0%
folds.foldl_traverseSum                60 ÎĽs   61 ÎĽs   +2%    288 KB  288 KB   +0%
folds.foldr'_sum                       13 ÎĽs   14 ÎĽs   +3%     47 B    47 B    +0%
folds.foldr_cpsOneShotSum              45 ÎĽs   46 ÎĽs   +2%    320 KB  320 KB   +0%
folds.foldr_cpsSum                     69 ÎĽs   70 ÎĽs   +0%    416 KB  416 KB   +0%
folds.foldr_elem                       28 ÎĽs   29 ÎĽs   +2%    160 KB  160 KB   +0%
folds.foldr_traverseSum                62 ÎĽs   61 ÎĽs   -1%    288 KB  288 KB   +0%
fromAscList                            27 ÎĽs   26 ÎĽs   +0%    209 KB  209 KB   +0%
fromAscList:fusion                     15 ÎĽs   15 ÎĽs   +0%    289 KB  289 KB   +0%
fromAscListWithKey                     36 ÎĽs   36 ÎĽs   -1%    289 KB  289 KB   +0%
fromAscListWithKey:fusion              16 ÎĽs   16 ÎĽs   -1%    297 KB  297 KB   +0%
fromDescList                           27 ÎĽs   28 ÎĽs   +3%    209 KB  209 KB   +0%
fromDescList:fusion                    48 ÎĽs   48 ÎĽs   +0%    609 KB  609 KB   +0%
fromDescListWithKey                    36 ÎĽs   36 ÎĽs   +0%    289 KB  289 KB   +0%
fromDescListWithKey:fusion             54 ÎĽs   53 ÎĽs   -1%    689 KB  689 KB   +0%
fromDistinctAscList                    34 ÎĽs   35 ÎĽs   +1%    273 KB  273 KB   +0%
fromDistinctAscList:fusion             21 ÎĽs   20 ÎĽs   +0%    337 KB  337 KB   +0%
fromDistinctDescList                   30 ÎĽs   30 ÎĽs   -1%    273 KB  273 KB   +0%
fromDistinctDescList:fusion            21 ÎĽs   21 ÎĽs   +0%    337 KB  337 KB   +0%
fromList                              818 ÎĽs  742 ÎĽs   -9%    2.3 MB  2.3 MB   +0%
fromList-distinctAsc                   32 ÎĽs   32 ÎĽs   +0%    305 KB  305 KB   +0%
fromList-distinctAsc:fusion            32 ÎĽs   32 ÎĽs   +0%    481 KB  481 KB   +0%
fromList-distinctDesc                 574 ÎĽs  412 ÎĽs  -28%    3.1 MB  3.1 MB   +0%
fromList-distinctDesc:fusion          620 ÎĽs  461 ÎĽs  -25%    3.4 MB  3.4 MB   +0%
fromListWith-asc                       30 ÎĽs   28 ÎĽs   -7%    273 KB  273 KB   +0%
fromListWith-asc:fusion                29 ÎĽs   29 ÎĽs   +0%    513 KB  513 KB   +0%
fromListWith-desc                     530 ÎĽs  331 ÎĽs  -37%    2.8 MB  2.8 MB   +0%
fromListWith-desc:fusion              578 ÎĽs  381 ÎĽs  -34%    3.1 MB  3.1 MB   +0%
fromListWithKey-asc                    36 ÎĽs   29 ÎĽs  -18%    289 KB  289 KB   +0%
fromListWithKey-asc:fusion             30 ÎĽs   30 ÎĽs   -1%    529 KB  529 KB   +0%
fromListWithKey-desc                  529 ÎĽs  340 ÎĽs  -35%    2.8 MB  2.8 MB   +0%
fromListWithKey-desc:fusion           575 ÎĽs  388 ÎĽs  -32%    3.2 MB  3.2 MB   +0%
insert absent                         428 ÎĽs  340 ÎĽs  -20%    1.2 MB  1.2 MB   +0%
insert present                        206 ÎĽs  204 ÎĽs   +0%    198 B   195 B    -1%
insertLookupWithKey absent            444 ÎĽs  353 ÎĽs  -20%    1.2 MB  1.2 MB   +0%
insertLookupWithKey present           375 ÎĽs  291 ÎĽs  -22%    1.1 MB  1.1 MB   +0%
insertLookupWithKey' absent           432 ÎĽs  346 ÎĽs  -19%    1.2 MB  1.2 MB   +0%
insertLookupWithKey' present          360 ÎĽs  289 ÎĽs  -19%    1.1 MB  1.1 MB   +0%
insertWith absent                     429 ÎĽs  331 ÎĽs  -22%    1.2 MB  1.2 MB   +0%
insertWith present                    369 ÎĽs  272 ÎĽs  -26%    1.1 MB  1.1 MB   +0%
insertWith' absent                    423 ÎĽs  322 ÎĽs  -23%    1.2 MB  1.2 MB   +0%
insertWith' present                   350 ÎĽs  269 ÎĽs  -23%    1.1 MB  1.1 MB   +0%
insertWithKey absent                  422 ÎĽs  332 ÎĽs  -21%    1.2 MB  1.2 MB   +0%
insertWithKey present                 363 ÎĽs  278 ÎĽs  -23%    1.1 MB  1.1 MB   +0%
insertWithKey' absent                 426 ÎĽs  324 ÎĽs  -23%    1.2 MB  1.2 MB   +0%
insertWithKey' present                358 ÎĽs  267 ÎĽs  -25%    1.0 MB  1.0 MB   +0%
intersection                          189 ÎĽs  177 ÎĽs   -6%    400 KB  400 KB   +0%
lookup absent                         129 ÎĽs  128 ÎĽs   +0%    162 B    69 B   -57%
lookup present                        121 ÎĽs  124 ÎĽs   +2%     32 KB   32 KB   +0%
lookupIndex                           167 ÎĽs  161 ÎĽs   -3%    128 KB  128 KB   +0%
map                                    37 ÎĽs   38 ÎĽs   +3%    288 KB  288 KB   +0%
map really                             88 ÎĽs   91 ÎĽs   +3%    352 KB  352 KB   +0%
mapKeys:asc                            82 ÎĽs   81 ÎĽs   +0%    481 KB  481 KB   +0%
mapKeys:desc                          646 ÎĽs  482 ÎĽs  -25%    3.2 MB  3.2 MB   +0%
mapKeysWith:asc                        72 ÎĽs   71 ÎĽs   -1%    465 KB  465 KB   +0%
mapKeysWith:desc                      584 ÎĽs  391 ÎĽs  -33%    2.9 MB  2.9 MB   +0%
mapMaybe                              108 ÎĽs  103 ÎĽs   -4%    253 KB  254 KB   +0%
mapMaybeWithKey                       108 ÎĽs  104 ÎĽs   -4%    254 KB  254 KB   +0%
mapWithKey                             40 ÎĽs   43 ÎĽs   +6%    352 KB  352 KB   +0%
minView                                22 ns   18 ns  -19%    136 B   136 B    +0%
split                                 187 ns  163 ns  -12%    1.1 KB  1.1 KB   +0%
union                                 128 ÎĽs  126 ÎĽs   -1%    583 KB  583 KB   +0%
update absent                         393 ÎĽs  316 ÎĽs  -19%    1.1 MB  1.1 MB   +0%
update delete                         470 ÎĽs  379 ÎĽs  -19%    1.1 MB  1.1 MB   +0%
update present                        328 ÎĽs  256 ÎĽs  -21%    921 KB  920 KB   +0%
updateLookupWithKey absent            413 ÎĽs  332 ÎĽs  -19%    1.1 MB  1.1 MB   +0%
updateLookupWithKey delete            478 ÎĽs  387 ÎĽs  -19%    1.1 MB  1.1 MB   +0%
updateLookupWithKey present           344 ÎĽs  259 ÎĽs  -24%    953 KB  952 KB   +0%

Set operations, Set:

Expand
Name                                  Time - - - - - - - -    Allocated - - - - -
                                           A       B     %         A       B     %
difference-block_nn                   463 ÎĽs  457 ÎĽs   -1%    1.1 MB  1.1 MB   +0%
difference-block_nn_swap              461 ÎĽs  455 ÎĽs   -1%    1.1 MB  1.1 MB   +0%
difference-block_ns                    52 ÎĽs   50 ÎĽs   -4%    153 KB  153 KB   +0%
difference-block_sn_swap               52 ÎĽs   50 ÎĽs   -4%    142 KB  142 KB   +0%
difference-common_nn                  7.0 ms  6.5 ms   -7%     10 MB   10 MB   +0%
difference-common_nn_swap             3.5 ms  3.3 ms   -5%    5.0 MB  5.0 MB   +0%
difference-common_ns                  3.3 ms  3.1 ms   -7%    5.0 MB  5.0 MB   +0%
difference-common_nt                  150 ÎĽs  130 ÎĽs  -13%    361 KB  361 KB   +0%
difference-common_sn_swap             1.2 ms  1.1 ms   -5%    1.9 MB  1.9 MB   +0%
difference-common_tn_swap              84 ÎĽs   80 ÎĽs   -4%    130 KB  130 KB   +0%
difference-disj_nn                    2.8 ÎĽs  2.8 ÎĽs   +0%     10 KB   10 KB   +0%
difference-disj_nn_swap               2.6 ÎĽs  2.6 ÎĽs   +0%     10 KB   10 KB   +0%
difference-disj_ns                    2.3 ÎĽs  2.3 ÎĽs   +1%    8.2 KB  8.2 KB   +0%
difference-disj_nt                    1.4 ÎĽs  1.4 ÎĽs   +0%    5.0 KB  5.0 KB   +0%
difference-disj_sn_swap               2.4 ÎĽs  2.4 ÎĽs   +0%    8.5 KB  8.5 KB   +0%
difference-disj_tn_swap               1.5 ÎĽs  1.4 ÎĽs   -1%    5.0 KB  5.0 KB   +0%
difference-mix_nn                     6.8 ms  6.4 ms   -5%     15 MB   15 MB   +0%
difference-mix_nn_swap                6.8 ms  6.3 ms   -6%     15 MB   15 MB   +0%
difference-mix_ns                     2.0 ms  1.8 ms   -5%    4.1 MB  4.1 MB   +0%
difference-mix_nt                     114 ÎĽs  104 ÎĽs   -8%    261 KB  261 KB   +0%
difference-mix_sn_swap                1.7 ms  1.7 ms   -3%    2.8 MB  2.8 MB   +0%
difference-mix_tn_swap                 94 ÎĽs   94 ÎĽs   +0%    154 KB  154 KB   +0%
intersection-block_nn                 469 ÎĽs  466 ÎĽs   +0%    1.1 MB  1.1 MB   +0%
intersection-block_nn_swap            472 ÎĽs  459 ÎĽs   -2%    1.1 MB  1.1 MB   +0%
intersection-block_ns                  52 ÎĽs   50 ÎĽs   -2%    142 KB  142 KB   +0%
intersection-block_sn_swap             52 ÎĽs   50 ÎĽs   -3%    153 KB  153 KB   +0%
intersection-common_nn                6.1 ms  5.8 ms   -4%    7.9 MB  7.9 MB   +0%
intersection-common_nn_swap           2.8 ms  2.7 ms   -4%    4.8 MB  4.8 MB   +0%
intersection-common_ns                1.7 ms  1.6 ms   -4%    2.7 MB  2.7 MB   +0%
intersection-common_nt                105 ÎĽs  100 ÎĽs   -4%    161 KB  161 KB   +0%
intersection-common_sn_swap           1.4 ms  1.3 ms   -6%    3.0 MB  3.0 MB   +0%
intersection-common_tn_swap           100 ÎĽs   90 ÎĽs  -10%    232 KB  232 KB   +0%
intersection-disj_nn                  2.7 ÎĽs  2.6 ÎĽs   +0%     10 KB   10 KB   +0%
intersection-disj_nn_swap             2.9 ÎĽs  2.9 ÎĽs   +0%     10 KB   10 KB   +0%
intersection-disj_ns                  2.4 ÎĽs  2.4 ÎĽs   +2%    8.5 KB  8.5 KB   +0%
intersection-disj_nt                  1.5 ÎĽs  1.5 ÎĽs   +1%    5.0 KB  5.0 KB   +0%
intersection-disj_sn_swap             2.3 ÎĽs  2.4 ÎĽs   +0%    8.2 KB  8.2 KB   +0%
intersection-disj_tn_swap             1.4 ÎĽs  1.4 ÎĽs   +0%    5.0 KB  5.0 KB   +0%
intersection-mix_nn                   6.2 ms  6.0 ms   -3%     15 MB   15 MB   +0%
intersection-mix_nn_swap              6.1 ms  6.0 ms   -2%     15 MB   15 MB   +0%
intersection-mix_ns                   1.6 ms  1.6 ms   -2%    2.8 MB  2.8 MB   +0%
intersection-mix_nt                    99 ÎĽs  101 ÎĽs   +1%    154 KB  154 KB   +0%
intersection-mix_sn_swap              1.9 ms  1.8 ms   -7%    4.1 MB  4.1 MB   +0%
intersection-mix_tn_swap              113 ÎĽs  104 ÎĽs   -8%    261 KB  261 KB   +0%
symmetricDifference-block_nn          689 ÎĽs  641 ÎĽs   -6%    1.7 MB  1.7 MB   +0%
symmetricDifference-block_nn_swap     688 ÎĽs  641 ÎĽs   -6%    1.7 MB  1.7 MB   +0%
symmetricDifference-block_ns           69 ÎĽs   64 ÎĽs   -7%    211 KB  211 KB   +0%
symmetricDifference-block_sn_swap      77 ÎĽs   67 ÎĽs  -12%    249 KB  249 KB   +0%
symmetricDifference-common_nn         6.1 ms  5.9 ms   -4%    7.9 MB  7.9 MB   +0%
symmetricDifference-common_nn_swap    6.5 ms  6.1 ms   -5%    8.5 MB  8.5 MB   +0%
symmetricDifference-common_ns         2.1 ms  2.0 ms   -1%    3.4 MB  3.4 MB   +0%
symmetricDifference-common_nt         117 ÎĽs  116 ÎĽs   +0%    243 KB  243 KB   +0%
symmetricDifference-common_sn_swap    3.0 ms  2.9 ms   -5%    4.7 MB  4.7 MB   +0%
symmetricDifference-common_tn_swap    147 ÎĽs  128 ÎĽs  -12%    349 KB  348 KB   +0%
symmetricDifference-disj_nn           4.0 ÎĽs  3.4 ÎĽs  -13%     16 KB   16 KB   +0%
symmetricDifference-disj_nn_swap      4.3 ÎĽs  3.6 ÎĽs  -15%     17 KB   17 KB   +0%
symmetricDifference-disj_ns           3.3 ÎĽs  2.9 ÎĽs  -10%     13 KB   13 KB   +0%
symmetricDifference-disj_nt           1.9 ÎĽs  1.7 ÎĽs   -9%    7.1 KB  7.1 KB   +0%
symmetricDifference-disj_sn_swap      3.7 ÎĽs  3.1 ÎĽs  -16%     15 KB   15 KB   +0%
symmetricDifference-disj_tn_swap      2.4 ÎĽs  2.0 ÎĽs  -17%    9.6 KB  9.6 KB   +0%
symmetricDifference-mix_nn             19 ms   18 ms   -2%     19 MB   19 MB   +0%
symmetricDifference-mix_nn_swap        19 ms   18 ms   -2%     19 MB   19 MB   +0%
symmetricDifference-mix_ns            3.3 ms  3.2 ms   -2%    5.1 MB  5.1 MB   +0%
symmetricDifference-mix_nt            126 ÎĽs  126 ÎĽs   +0%    297 KB  297 KB   +0%
symmetricDifference-mix_sn_swap       3.1 ms  3.0 ms   -3%    4.5 MB  4.5 MB   +0%
symmetricDifference-mix_tn_swap       118 ÎĽs  109 ÎĽs   -7%    273 KB  273 KB   +0%
union-block_nn                        674 ÎĽs  629 ÎĽs   -6%    1.6 MB  1.6 MB   +0%
union-block_nn_swap                   672 ÎĽs  626 ÎĽs   -6%    1.6 MB  1.6 MB   +0%
union-block_ns                         69 ÎĽs   62 ÎĽs   -9%    204 KB  204 KB   +0%
union-block_sn_swap                    75 ÎĽs   65 ÎĽs  -12%    238 KB  238 KB   +0%
union-common_nn                       3.0 ms  3.0 ms   +0%    4.7 MB  4.7 MB   +0%
union-common_nn_swap                  7.7 ms  7.5 ms   -3%    7.3 MB  7.3 MB   +0%
union-common_ns                       876 ÎĽs  878 ÎĽs   +0%    1.3 MB  1.3 MB   +0%
union-common_nt                        41 ÎĽs   40 ÎĽs   +0%     49 KB   49 KB   +0%
union-common_sn_swap                  1.6 ms  1.6 ms   -4%    2.8 MB  2.8 MB   +0%
union-common_tn_swap                   85 ÎĽs   75 ÎĽs  -11%    200 KB  200 KB   +0%
union-disj_nn                         3.8 ÎĽs  3.2 ÎĽs  -14%     16 KB   16 KB   +0%
union-disj_nn_swap                    4.0 ÎĽs  3.6 ÎĽs  -10%     16 KB   16 KB   +0%
union-disj_ns                         3.2 ÎĽs  2.9 ÎĽs  -10%     12 KB   12 KB   +0%
union-disj_nt                         1.9 ÎĽs  1.7 ÎĽs  -10%    6.8 KB  6.8 KB   +0%
union-disj_sn_swap                    3.6 ÎĽs  3.0 ÎĽs  -16%     14 KB   14 KB   +0%
union-disj_tn_swap                    2.2 ÎĽs  1.8 ÎĽs  -17%    9.0 KB  9.0 KB   +0%
union-mix_nn                           21 ms   20 ms   -1%     23 MB   23 MB   +0%
union-mix_nn_swap                      20 ms   20 ms   +0%     23 MB   23 MB   +0%
union-mix_ns                          2.1 ms  2.0 ms   -1%    3.8 MB  3.8 MB   +0%
union-mix_nt                           81 ÎĽs   71 ÎĽs  -12%    188 KB  188 KB   +0%
union-mix_sn_swap                     3.3 ms  3.2 ms   -3%    4.0 MB  4.0 MB   +0%
union-mix_tn_swap                     100 ÎĽs   89 ÎĽs  -11%    228 KB  228 KB   +0%

Set operations, Map:

Expand
Name                                  Time - - - - - - - -    Allocated - - - - -
                                           A       B     %         A       B     %
difference-block_nn                   461 ÎĽs  439 ÎĽs   -4%    1.3 MB  1.3 MB   +0%
difference-block_nn_swap              460 ÎĽs  439 ÎĽs   -4%    1.3 MB  1.3 MB   +0%
difference-block_ns                    50 ÎĽs   47 ÎĽs   -6%    184 KB  184 KB   +0%
difference-block_sn_swap               51 ÎĽs   48 ÎĽs   -5%    171 KB  171 KB   +0%
difference-common_nn                  7.6 ms  7.3 ms   -4%     12 MB   12 MB   +0%
difference-common_nn_swap             3.4 ms  3.4 ms   -2%    6.0 MB  6.0 MB   +0%
difference-common_ns                  4.1 ms  3.9 ms   -4%    6.1 MB  6.1 MB   +0%
difference-common_nt                  151 ÎĽs  134 ÎĽs  -11%    433 KB  433 KB   +0%
difference-common_sn_swap             1.2 ms  1.2 ms   -2%    2.3 MB  2.3 MB   +0%
difference-common_tn_swap              78 ÎĽs   76 ÎĽs   -2%    156 KB  156 KB   +0%
difference-disj_nn                    2.6 ÎĽs  2.5 ÎĽs   -3%     12 KB   12 KB   +0%
difference-disj_nn_swap               2.3 ÎĽs  2.2 ÎĽs   -4%     12 KB   12 KB   +0%
difference-disj_ns                    2.0 ÎĽs  2.0 ÎĽs   -3%    9.8 KB  9.8 KB   +0%
difference-disj_nt                    1.3 ÎĽs  1.2 ÎĽs   -3%    6.0 KB  6.0 KB   +0%
difference-disj_sn_swap               2.3 ÎĽs  2.1 ÎĽs  -10%     10 KB   10 KB   +0%
difference-disj_tn_swap               1.4 ÎĽs  1.3 ÎĽs   -3%    6.0 KB  6.0 KB   +0%
difference-mix_nn                     7.2 ms  7.0 ms   -3%     18 MB   18 MB   +0%
difference-mix_nn_swap                7.1 ms  6.7 ms   -5%     18 MB   18 MB   +0%
difference-mix_ns                     2.0 ms  1.9 ms   -5%    4.9 MB  4.9 MB   +0%
difference-mix_nt                     114 ÎĽs  107 ÎĽs   -5%    313 KB  313 KB   +0%
difference-mix_sn_swap                1.6 ms  1.6 ms   -1%    3.4 MB  3.4 MB   +0%
difference-mix_tn_swap                 91 ÎĽs   88 ÎĽs   -3%    185 KB  185 KB   +0%
intersection-block_nn                 461 ÎĽs  435 ÎĽs   -5%    1.3 MB  1.3 MB   +0%
intersection-block_nn_swap            463 ÎĽs  437 ÎĽs   -5%    1.3 MB  1.3 MB   +0%
intersection-block_ns                  51 ÎĽs   48 ÎĽs   -5%    171 KB  171 KB   +0%
intersection-block_sn_swap             50 ÎĽs   47 ÎĽs   -6%    184 KB  184 KB   +0%
intersection-common_nn                6.9 ms  6.5 ms   -6%    9.4 MB  9.4 MB   +0%
intersection-common_nn_swap           2.9 ms  2.7 ms   -7%    5.7 MB  5.7 MB   +0%
intersection-common_ns                1.7 ms  1.6 ms   -5%    3.2 MB  3.2 MB   +0%
intersection-common_nt                101 ÎĽs   98 ÎĽs   -3%    194 KB  194 KB   +0%
intersection-common_sn_swap           1.4 ms  1.4 ms   -4%    3.6 MB  3.6 MB   +0%
intersection-common_tn_swap            99 ÎĽs   92 ÎĽs   -7%    278 KB  278 KB   +0%
intersection-disj_nn                  2.3 ÎĽs  2.2 ÎĽs   -4%     12 KB   12 KB   +0%
intersection-disj_nn_swap             2.5 ÎĽs  2.4 ÎĽs   -4%     12 KB   12 KB   +0%
intersection-disj_ns                  2.2 ÎĽs  2.1 ÎĽs   -6%     10 KB   10 KB   +0%
intersection-disj_nt                  1.4 ÎĽs  1.3 ÎĽs   -6%    6.0 KB  6.0 KB   +0%
intersection-disj_sn_swap             2.1 ÎĽs  2.0 ÎĽs   -5%    9.8 KB  9.8 KB   +0%
intersection-disj_tn_swap             1.3 ÎĽs  1.2 ÎĽs   -4%    6.0 KB  6.0 KB   +0%
intersection-mix_nn                   6.4 ms  6.3 ms   +0%     18 MB   18 MB   +0%
intersection-mix_nn_swap              6.3 ms  6.3 ms   +0%     18 MB   18 MB   +0%
intersection-mix_ns                   1.6 ms  1.6 ms   +0%    3.4 MB  3.4 MB   +0%
intersection-mix_nt                    94 ÎĽs   95 ÎĽs   +0%    185 KB  185 KB   +0%
intersection-mix_sn_swap              1.9 ms  1.8 ms   -4%    4.9 MB  4.9 MB   +0%
intersection-mix_tn_swap              112 ÎĽs  103 ÎĽs   -7%    313 KB  313 KB   +0%
symmetricDifference-block_nn          699 ÎĽs  658 ÎĽs   -5%    2.1 MB  2.1 MB   +0%
symmetricDifference-block_nn_swap     700 ÎĽs  670 ÎĽs   -4%    2.1 MB  2.1 MB   +0%
symmetricDifference-block_ns           68 ÎĽs   64 ÎĽs   -5%    253 KB  253 KB   +0%
symmetricDifference-block_sn_swap      76 ÎĽs   67 ÎĽs  -11%    299 KB  299 KB   +0%
symmetricDifference-common_nn         6.9 ms  6.8 ms   -1%    9.5 MB  9.5 MB   +0%
symmetricDifference-common_nn_swap    6.9 ms  6.7 ms   -3%     10 MB   10 MB   +0%
symmetricDifference-common_ns         2.3 ms  2.3 ms   -2%    4.0 MB  4.0 MB   +0%
symmetricDifference-common_nt         118 ÎĽs  114 ÎĽs   -3%    292 KB  292 KB   +0%
symmetricDifference-common_sn_swap    3.8 ms  3.6 ms   -5%    5.6 MB  5.6 MB   +0%
symmetricDifference-common_tn_swap    151 ÎĽs  134 ÎĽs  -11%    418 KB  418 KB   +0%
symmetricDifference-disj_nn           3.6 ÎĽs  3.2 ÎĽs  -11%     20 KB   20 KB   +0%
symmetricDifference-disj_nn_swap      3.9 ÎĽs  3.4 ÎĽs  -14%     20 KB   20 KB   +0%
symmetricDifference-disj_ns           3.1 ÎĽs  2.7 ÎĽs  -10%     15 KB   15 KB   +0%
symmetricDifference-disj_nt           1.8 ÎĽs  1.6 ÎĽs  -10%    8.5 KB  8.5 KB   +0%
symmetricDifference-disj_sn_swap      3.6 ÎĽs  2.9 ÎĽs  -18%     18 KB   18 KB   +0%
symmetricDifference-disj_tn_swap      2.3 ÎĽs  1.9 ÎĽs  -18%     12 KB   12 KB   +0%
symmetricDifference-mix_nn             15 ms   20 ms  +32%     23 MB   23 MB   +0%
symmetricDifference-mix_nn_swap        20 ms   20 ms   +0%     23 MB   23 MB   +0%
symmetricDifference-mix_ns            3.9 ms  4.1 ms   +3%    6.2 MB  6.2 MB   +0%
symmetricDifference-mix_nt            127 ÎĽs  126 ÎĽs   -1%    356 KB  356 KB   +0%
symmetricDifference-mix_sn_swap       4.0 ms  4.0 ms   +0%    5.4 MB  5.4 MB   +0%
symmetricDifference-mix_tn_swap       119 ÎĽs  113 ÎĽs   -5%    328 KB  328 KB   +0%
union-block_nn                        706 ÎĽs  630 ÎĽs  -10%    2.0 MB  2.0 MB   +0%
union-block_nn_swap                   695 ÎĽs  619 ÎĽs  -10%    2.0 MB  2.0 MB   +0%
union-block_ns                         70 ÎĽs   61 ÎĽs  -13%    245 KB  245 KB   +0%
union-block_sn_swap                    77 ÎĽs   65 ÎĽs  -16%    286 KB  286 KB   +0%
union-common_nn                       3.2 ms  3.2 ms   -1%    5.7 MB  5.7 MB   +0%
union-common_nn_swap                  8.1 ms  8.0 ms   -1%    8.3 MB  8.3 MB   +0%
union-common_ns                       933 ÎĽs  907 ÎĽs   -2%    1.5 MB  1.5 MB   +0%
union-common_nt                        43 ÎĽs   41 ÎĽs   -4%     59 KB   59 KB   +0%
union-common_sn_swap                  1.9 ms  1.8 ms   -5%    3.4 MB  3.4 MB   +0%
union-common_tn_swap                   87 ÎĽs   75 ÎĽs  -13%    240 KB  240 KB   +0%
union-disj_nn                         3.6 ÎĽs  3.1 ÎĽs  -16%     19 KB   19 KB   +0%
union-disj_nn_swap                    4.0 ÎĽs  3.3 ÎĽs  -15%     19 KB   19 KB   +0%
union-disj_ns                         3.1 ÎĽs  2.6 ÎĽs  -15%     14 KB   14 KB   +0%
union-disj_nt                         1.8 ÎĽs  1.6 ÎĽs  -15%    8.2 KB  8.2 KB   +0%
union-disj_sn_swap                    3.4 ÎĽs  2.9 ÎĽs  -16%     17 KB   17 KB   +0%
union-disj_tn_swap                    2.2 ÎĽs  1.8 ÎĽs  -16%     11 KB   11 KB   +0%
union-mix_nn                           23 ms   23 ms   -1%     28 MB   28 MB   +0%
union-mix_nn_swap                      23 ms   23 ms   +0%     28 MB   28 MB   +0%
union-mix_ns                          2.8 ms  2.6 ms   -4%    4.6 MB  4.6 MB   +0%
union-mix_nt                           86 ÎĽs   71 ÎĽs  -17%    225 KB  225 KB   +0%
union-mix_sn_swap                     3.8 ms  3.2 ms  -15%    4.8 MB  4.8 MB   +0%
union-mix_tn_swap                     105 ÎĽs   90 ÎĽs  -14%    273 KB  273 KB   +0%

@meooow25 meooow25 mentioned this pull request Oct 31, 2024
9 tasks
@meooow25 meooow25 requested a review from treeowl November 17, 2024 14:01
@meooow25
Copy link
Contributor Author

@treeowl would you like to take a look at this?

For Set and Map, inline the common case of balance, balanceL, balanceR,
as explained in the "Inlining balance" note.
A decrease in running time of 10-30% is seen in benchmarks for insert,
delete, union, and more.
@meooow25 meooow25 force-pushed the balance-partial-inline branch from 240d0e7 to d65ef95 Compare January 11, 2025 02:13
@meooow25
Copy link
Contributor Author

Rebased and updated benchmarks.

I'll merge this soon so that I can compare against this for #1073.

@meooow25 meooow25 merged commit d5cbecf into haskell:master Jan 12, 2025
13 checks passed
@meooow25 meooow25 deleted the balance-partial-inline branch January 12, 2025 03:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make Set/Map balance calls faster

1 participant