Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor and add currying optimization to uplc shrinker #770

Merged
merged 16 commits into from
Mar 4, 2024

Conversation

MicroProofs
Copy link
Member

@MicroProofs MicroProofs commented Dec 4, 2023

  • Refactor optimizations so they use a uniform abstraction over the uplc tree
  • Add currying to reduce duplicated applies to the same builtins
  • Replace subtract integer with add integer when the second argument is a constant and flip the sign for the constant.

@MicroProofs MicroProofs requested review from KtorZ and rvcas December 4, 2023 18:44
@MicroProofs MicroProofs force-pushed the binop-optimizations branch 3 times, most recently from 3385add to d840c94 Compare December 8, 2023 20:03
@MicroProofs MicroProofs reopened this Dec 18, 2023
@MicroProofs MicroProofs force-pushed the binop-optimizations branch 2 times, most recently from 1caa4ee to 537e975 Compare January 31, 2024 15:42
@MicroProofs MicroProofs force-pushed the binop-optimizations branch 3 times, most recently from b43beac to 511af43 Compare February 19, 2024 19:28
@MicroProofs MicroProofs marked this pull request as ready for review February 19, 2024 19:28
@MicroProofs MicroProofs requested a review from a team as a code owner February 19, 2024 19:28
@MicroProofs
Copy link
Member Author

MicroProofs commented Feb 19, 2024

Gonna provide benchmarks soon. Looks like I might need to tweak the inline reducer a bit more to help reduce lambda overhead from throwing off stdlib comparisons

@MicroProofs MicroProofs force-pushed the binop-optimizations branch 3 times, most recently from 2b7fc0a to c027021 Compare March 2, 2024 18:40
@MicroProofs
Copy link
Member Author

MicroProofs commented Mar 2, 2024

Here are benchmarks of stdlib between main and this branch

MAIN

┍━ aiken/bytearray ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1003, cpu:    426077] concat_1
│ PASS [mem:   1003, cpu:    426077] concat_2
│ PASS [mem:   1003, cpu:    426077] concat_3
│ PASS [mem:   1003, cpu:    426077] concat_4
│ PASS [mem:   1817, cpu:   1080730] drop_1
│ PASS [mem:   1817, cpu:   1080730] drop_2
│ PASS [mem:   1817, cpu:   1080730] drop_3
│ PASS [mem:   1817, cpu:   1080730] drop_4
│ PASS [mem:   3913, cpu:   1373522] foldl_1
│ PASS [mem:  11337, cpu:   4781534] foldl_2
│ PASS [mem: 122790, cpu:  56467868] foldl_3
│ PASS [mem:  20463, cpu:   9057009] foldl_4
│ PASS [mem:   4315, cpu:   1672473] foldr_1
│ PASS [mem:  11739, cpu:   5081433] foldr_2
│ PASS [mem:  20865, cpu:   9358330] foldr_3
│ PASS [mem:  49229, cpu:  24098953] index_of_1
│ PASS [mem:  58023, cpu:  29204758] index_of_2
│ PASS [mem:  71289, cpu:  35487083] index_of_3
│ PASS [mem:  35993, cpu:  17266075] index_of_4
│ PASS [mem:  18345, cpu:   8155633] index_of_5
│ PASS [mem:    811, cpu:    371033] length_1
│ PASS [mem:    811, cpu:    371033] length_2
│ PASS [mem:   2012, cpu:    727589] is_empty_1
│ PASS [mem:   2613, cpu:    946145] is_empty_2
│ PASS [mem:    805, cpu:    378935] from_string_1
│ PASS [mem:    811, cpu:    464921] from_string_2
│ PASS [mem:   1003, cpu:    646419] push_1
│ PASS [mem:   1003, cpu:    646419] push_2
│ PASS [mem:   1003, cpu:    646419] push_3
│ PASS [mem:   3913, cpu:   1381424] reduce_1
│ PASS [mem:  13843, cpu:   5986775] reduce_2
│ PASS [mem:   2009, cpu:   1332207] slice_1
│ PASS [mem:   2009, cpu:   1332207] slice_2
│ PASS [mem:   2009, cpu:   1332207] slice_3
│ PASS [mem:   2009, cpu:   1332207] slice_4
│ PASS [mem:   2009, cpu:   1332207] slice_5
│ PASS [mem:   1205, cpu:    735253] take_1
│ PASS [mem:   1205, cpu:    735253] take_2
│ PASS [mem:   1205, cpu:    735253] take_3
│ PASS [mem:   1205, cpu:    735253] take_4
│ PASS [mem:    807, cpu:    673693] to_string_1
│ PASS [mem:    807, cpu:    832687] to_string_2
│ PASS [mem: 108011, cpu:  61855963] to_hex_1
│ PASS [mem: 375697, cpu: 216635776] to_hex_2
│ PASS [mem:   6719, cpu:   3632961] test_bit_0
│ PASS [mem:   7320, cpu:   3851517] test_bit_1
│ PASS [mem:   7320, cpu:   3851517] test_bit_2
│ PASS [mem:   7320, cpu:   3851517] test_bit_3
│ PASS [mem:   6719, cpu:   3632961] test_bit_7
│ PASS [mem:   7320, cpu:   3851517] test_bit_8
│ PASS [mem:  28679, cpu:  15256212] test_bit_20_21_22_23
┕━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/cbor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:    811, cpu:   3501009] serialise_1
│ PASS [mem:    811, cpu:   3501009] serialise_2
│ PASS [mem:    809, cpu:   3108339] serialise_3
│ PASS [mem:    829, cpu:   7035039] serialise_4
│ PASS [mem:    839, cpu:   8998389] serialise_5
│ PASS [mem:    829, cpu:   7035039] serialise_6
│ PASS [mem:    819, cpu:   5071689] serialise_7
│ PASS [mem:    809, cpu:   3108339] serialise_8
│ PASS [mem:  19691, cpu:   8989703] diagnostic_1
│ PASS [mem:  30633, cpu:  14225910] diagnostic_2
│ PASS [mem:  57065, cpu:  22994310] diagnostic_3
│ PASS [mem:  10205, cpu:   3147969] diagnostic_4
│ PASS [mem:  42697, cpu:  16768823] diagnostic_5
│ PASS [mem:  63096, cpu:  25775131] diagnostic_6
│ PASS [mem:  44505, cpu:  18302470] diagnostic_7
│ PASS [mem:  52667, cpu:  24516759] diagnostic_8
│ PASS [mem:  30427, cpu:  14472260] diagnostic_9
│ PASS [mem:  10205, cpu:   3154036] diagnostic_10
│ PASS [mem:  63406, cpu:  30000969] diagnostic_11
│ PASS [mem:  85651, cpu:  40048083] diagnostic_12
│ PASS [mem:  73069, cpu:  33524600] diagnostic_13
│ PASS [mem:  24123, cpu:   7681749] diagnostic_14
│ PASS [mem:  23499, cpu:  10704772] diagnostic_15
│ PASS [mem:  56666, cpu:  21834295] diagnostic_16
┕━━━━━━━━━━━━━━━━━ 24 tests | 24 passed | 0 failed

┍━ aiken/dict ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   5665, cpu:   2615997] delete_1
│ PASS [mem:  12355, cpu:   5028121] delete_2
│ PASS [mem:  15347, cpu:   6182171] delete_3
│ PASS [mem:  37491, cpu:  13401301] delete_4
│ PASS [mem:  28904, cpu:  10317267] delete_5
│ PASS [mem:   5665, cpu:   2615997] filter_1
│ PASS [mem:  20573, cpu:   8115435] filter_2
│ PASS [mem:  20573, cpu:   8130291] filter_3
│ PASS [mem:   5433, cpu:   2505165] find_1
│ PASS [mem:  13219, cpu:   5357951] find_2
│ PASS [mem:  13555, cpu:   5406741] find_3
│ PASS [mem:  51181, cpu:  21504522] find_4
│ PASS [mem:   4633, cpu:   1419387] foldr_1
│ PASS [mem:  12285, cpu:   4489799] foldr_2
│ PASS [mem:   4933, cpu:   1488387] fold_1
│ PASS [mem:  13185, cpu:   4696799] fold_2
│ PASS [mem:   5665, cpu:   2615997] from_list_1
│ PASS [mem:  54121, cpu:  21540389] from_list_2
│ PASS [mem:  29993, cpu:  12552530] from_list_3
│ PASS [mem:  49473, cpu:  21857397] from_list_4
│ PASS [mem: 818421, cpu: 383786170] bench_from_list
│ PASS [mem: 189385, cpu:  71691280] bench_from_ascending_list
│ PASS [mem:   5433, cpu:   2505165] get_1
│ PASS [mem:  30565, cpu:  12084419] get_2
│ PASS [mem:  30901, cpu:  12133209] get_3
│ PASS [mem:   4733, cpu:   1314010] has_key_1
│ PASS [mem:  10958, cpu:   3424290] has_key_2
│ PASS [mem:  12991, cpu:   4140200] has_key_3
│ PASS [mem:  23078, cpu:   8231147] has_key_4
│ PASS [mem:  25545, cpu:  10394690] insert_1
│ PASS [mem:  38161, cpu:  15736765] insert_2
│ PASS [mem:  19549, cpu:   8207578] insert_with_1
│ PASS [mem:  47997, cpu:  20875464] insert_with_2
│ PASS [mem:  64397, cpu:  27808165] insert_with_3
│ PASS [mem:   1532, cpu:    497454] is_empty_1
│ PASS [mem:   4765, cpu:   2396632] keys_1
│ PASS [mem:  25801, cpu:  10413135] keys_2
│ PASS [mem:  28285, cpu:  10553161] map_1
│ PASS [mem:  40819, cpu:  16128638] map_2
│ PASS [mem:    601, cpu:   1225811] to_list_1
│ PASS [mem:    601, cpu:   1477531] to_list_2
│ PASS [mem:   3233, cpu:   1097387] size_1
│ PASS [mem:  10395, cpu:   3447758] size_2
│ PASS [mem:  24581, cpu:   9137628] size_3
│ PASS [mem:  30293, cpu:  12621530] union_1
│ PASS [mem:   5965, cpu:   2936717] union_2
│ PASS [mem: 120205, cpu:  49093019] union_3
│ PASS [mem:  88541, cpu:  35418436] union_4
│ PASS [mem:  92469, cpu:  37195044] union_with_1
│ PASS [mem:   4765, cpu:   2396632] values_1
│ PASS [mem:  25801, cpu:  10424125] values_2
┕━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/int ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem: 136447, cpu:  61201844] from_utf8_1
│ PASS [mem:  66403, cpu:  28391185] from_utf8_2
│ PASS [mem: 136447, cpu:  61201844] from_utf8_3
│ PASS [mem:  83656, cpu:  35242758] from_utf8_4
│ PASS [mem:  35393, cpu:  14359866] from_utf8_5
│ PASS [mem:  64094, cpu:  26135213] from_utf8_6
┕━━━━━━━━━━━━━━━━━ 6 tests | 6 passed | 0 failed

┍━ aiken/interval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  16751, cpu:   5567073] contains_1
│ PASS [mem:  28459, cpu:   9995894] contains_2
│ PASS [mem:  28459, cpu:   9991884] contains_3
│ PASS [mem:  29060, cpu:  10214450] contains_4
│ PASS [mem:  29429, cpu:  10474201] contains_5
│ PASS [mem:  29429, cpu:  10470191] contains_6
│ PASS [mem:  30030, cpu:  10692757] contains_7
│ PASS [mem:  39742, cpu:  14456431] contains_8
│ PASS [mem:  39141, cpu:  14237875] contains_9
│ PASS [mem:  39141, cpu:  14237875] contains_10
│ PASS [mem:  39742, cpu:  14464451] contains_11
│ PASS [mem:  17352, cpu:   5785629] contains_12
│ PASS [mem:  19034, cpu:   6724112] is_entirely_after_1
│ PASS [mem:  19635, cpu:   6942668] is_entirely_after_2
│ PASS [mem:  19635, cpu:   6942668] is_entirely_after_3
│ PASS [mem:  22396, cpu:   7995985] is_entirely_after_4
│ PASS [mem:  21795, cpu:   7777429] is_entirely_after_5
│ PASS [mem:  19034, cpu:   6720102] is_entirely_after_6
│ PASS [mem:  13216, cpu:   4380473] is_entirely_after_7
│ PASS [mem:  13216, cpu:   4380473] is_entirely_after_8
│ PASS [mem:  13216, cpu:   4380473] is_entirely_after_9
│ PASS [mem:  19498, cpu:   6898476] is_entirely_before_1
│ PASS [mem:  20099, cpu:   7117032] is_entirely_before_2
│ PASS [mem:  20099, cpu:   7117032] is_entirely_before_3
│ PASS [mem:  22259, cpu:   7951793] is_entirely_before_4
│ PASS [mem:  22860, cpu:   8170349] is_entirely_before_5
│ PASS [mem:  19498, cpu:   6894466] is_entirely_before_6
│ PASS [mem:  13148, cpu:   4398655] is_entirely_before_7
│ PASS [mem:  13148, cpu:   4398655] is_entirely_before_8
│ PASS [mem:  13148, cpu:   4398655] is_entirely_before_9
│ PASS [mem:  78827, cpu:  29633299] intersection_1
│ PASS [mem:  78827, cpu:  29633299] intersection_2
│ PASS [mem:  96587, cpu:  35516948] intersection_3
│ PASS [mem:  99015, cpu:  36049948] intersection_4
│ PASS [mem:  76780, cpu:  29447742] intersection_5
│ PASS [mem:  59521, cpu:  22710062] intersection_6
│ PASS [mem:  78827, cpu:  29633299] hull_1
│ PASS [mem:  72955, cpu:  28099495] hull_2
│ PASS [mem:  67521, cpu:  25806795] hull_3
┕━━━━━━━━━━━━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/list ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  16223, cpu:   5646325] all_1
│ PASS [mem:   7532, cpu:   2433317] all_2
│ PASS [mem:   4433, cpu:   1245010] all_3
│ PASS [mem:   6931, cpu:   2214761] any_1
│ PASS [mem:  16824, cpu:   5864881] any_2
│ PASS [mem:   5034, cpu:   1463566] any_3
│ PASS [mem:   4333, cpu:   1350387] count_empty
│ PASS [mem:  17329, cpu:   6647133] count_all
│ PASS [mem:  16927, cpu:   6336626] count_some
│ PASS [mem:  16123, cpu:   5751702] count_none
│ PASS [mem:  18629, cpu:   7846489] at_1
│ PASS [mem:   4733, cpu:   2344165] at_2
│ PASS [mem:  18629, cpu:   7846489] at_3
│ PASS [mem:   8327, cpu:   3762006] at_4
│ PASS [mem:  17591, cpu:   7430222] at_5
│ PASS [mem:  11249, cpu:   5153046] concat_1
│ PASS [mem:  11249, cpu:   4964256] concat_2
│ PASS [mem:   4265, cpu:   2470422] concat_3
│ PASS [mem:   4665, cpu:   2373632] delete_1
│ PASS [mem:   7163, cpu:   3531699] delete_2
│ PASS [mem:  18447, cpu:   7575794] delete_3
│ PASS [mem:   7163, cpu:   3342909] delete_4
│ PASS [mem:  44215, cpu:  16497251] difference_1
│ PASS [mem:  41717, cpu:  15656960] difference_2
│ PASS [mem:   4965, cpu:   2631422] difference_3
│ PASS [mem:  18345, cpu:   6845120] difference_4
│ PASS [mem:   5367, cpu:   2820585] drop_1
│ PASS [mem:  11671, cpu:   5552093] drop_2
│ PASS [mem:   4265, cpu:   2281632] drop_while_1
│ PASS [mem:  26413, cpu:  10901558] drop_while_2
│ PASS [mem:   6763, cpu:   3880209] drop_while_3
│ PASS [mem:  43565, cpu:  16952682] drop_while_4
│ PASS [mem:   4665, cpu:   2373632] filter_1
│ PASS [mem:  32643, cpu:  15248447] filter_2
│ PASS [mem:  40977, cpu:  17849167] filter_3
│ PASS [mem:   5665, cpu:   2603632] filter_map_1
│ PASS [mem:  56731, cpu:  24711727] filter_map_2
│ PASS [mem:   8027, cpu:   3693006] find_1
│ PASS [mem:  16223, cpu:   6676480] find_2
│ PASS [mem:   4433, cpu:   2275165] find_3
│ PASS [mem:   4265, cpu:   2281632] flat_map_1
│ PASS [mem:  36497, cpu:  13483326] flat_map_2
│ PASS [mem:   3933, cpu:   1258387] foldl_1
│ PASS [mem:  18083, cpu:   6911482] foldl_2
│ PASS [mem:  15077, cpu:   6203464] foldl_3
│ PASS [mem:  16283, cpu:   6497482] foldr_1
│ PASS [mem:  17026, cpu:   7325562] foldr_2
│ PASS [mem:  13577, cpu:   5858464] foldr_3
│ PASS [mem:   4433, cpu:   2275165] init_1
│ PASS [mem:   8025, cpu:   3706500] init_2
│ PASS [mem:  19101, cpu:   7935732] init_3
│ PASS [mem:   6931, cpu:   2214287] has_1
│ PASS [mem:  16824, cpu:   5863459] has_2
│ PASS [mem:   5034, cpu:   1463566] has_3
│ PASS [mem:  17591, cpu:   7430222] index_of_1
│ PASS [mem:  18629, cpu:   7846489] index_of_2
│ PASS [mem:  22223, cpu:   9264330] index_of_3
│ PASS [mem:   4733, cpu:   2344165] index_of_4
│ PASS [mem:   3829, cpu:   2374978] head_1
│ PASS [mem:   2733, cpu:   1884165] head_2
│ PASS [mem:   3933, cpu:   1258387] indexed_foldr_1
│ PASS [mem:  17039, cpu:   7356035] indexed_foldr_2
│ PASS [mem:   4565, cpu:   2350632] indexed_map_1
│ PASS [mem:  24949, cpu:  10572756] indexed_map_2
│ PASS [mem:   2733, cpu:    854010] is_empty_1
│ PASS [mem:   3334, cpu:   1072566] is_empty_2
│ PASS [mem:   4033, cpu:   2183165] last_1
│ PASS [mem:   6493, cpu:   3189514] last_2
│ PASS [mem:  15577, cpu:   6489730] last_3
│ PASS [mem:   3233, cpu:   1097387] length_1
│ PASS [mem:   9431, cpu:   3746426] length_2
│ PASS [mem:   4265, cpu:   2281632] map_1
│ PASS [mem:  17041, cpu:   7597800] map_2
│ PASS [mem:   4565, cpu:   2350632] map2_1
│ PASS [mem:  17937, cpu:   7436142] map2_2
│ PASS [mem:  10185, cpu:   4465960] map2_3
│ PASS [mem:   4865, cpu:   2419632] map3_1
│ PASS [mem:  23897, cpu:   9766380] map3_2
│ PASS [mem:   1365, cpu:   1567701] push_1
│ PASS [mem:   1365, cpu:   1693561] push_2
│ PASS [mem:  15207, cpu:   7360693] range_1
│ PASS [mem:  12339, cpu:   6090830] range_2
│ PASS [mem:   3735, cpu:   2277231] repeat_1
│ PASS [mem:  11643, cpu:   5933790] repeat_2
│ PASS [mem:   4565, cpu:   2350632] reverse_1
│ PASS [mem:  13841, cpu:   5649327] reverse_2
│ PASS [mem:   6761, cpu:   3142503] partition_1
│ PASS [mem:  79941, cpu:  30360843] partition_2
│ PASS [mem:  80373, cpu:  30524614] partition_3
│ PASS [mem:  80373, cpu:  30529354] partition_4
│ PASS [mem:  37637, cpu:  16209783] partition_5
│ PASS [mem:  28169, cpu:  11973193] slice_1
│ PASS [mem:  35305, cpu:  15001125] slice_2
│ PASS [mem:  57063, cpu:  24259293] slice_3
│ PASS [mem:  56097, cpu:  23998965] slice_4
│ PASS [mem:  49927, cpu:  21231361] slice_5
│ PASS [mem:  45303, cpu:  19084686] slice_6
│ PASS [mem: 284747, cpu: 144221960] sort_1
│ PASS [mem:  89205, cpu:  41655984] sort_2
│ PASS [mem: 370815, cpu: 186440082] sort_3
│ PASS [mem:   4665, cpu:   2373632] sort_4
│ PASS [mem:   7061, cpu:   3211503] span_1
│ PASS [mem:  24135, cpu:  10048326] span_2
│ PASS [mem:  10223, cpu:   4633012] span_3
│ PASS [mem:  27929, cpu:  11523264] span_4
│ PASS [mem:   4061, cpu:   2584652] tail_1
│ PASS [mem:   2733, cpu:   1884165] tail_2
│ PASS [mem:   6167, cpu:   3004585] take_1
│ PASS [mem:  13799, cpu:   6292507] take_2
│ PASS [mem:   4665, cpu:   2373632] take_while_1
│ PASS [mem:  30133, cpu:  12016023] take_while_2
│ PASS [mem:   7163, cpu:   3342909] take_while_3
│ PASS [mem:  50605, cpu:  19718912] take_while_4
│ PASS [mem:   4665, cpu:   2373632] unique_1
│ PASS [mem: 418774, cpu: 152049665] unique_2
│ PASS [mem:   6361, cpu:   3050503] unzip_1
│ PASS [mem:  21313, cpu:   8568265] unzip_2
│ PASS [mem:   4565, cpu:   2362997] zip_1
│ PASS [mem:   6693, cpu:   3126139] zip_2
│ PASS [mem:  15405, cpu:   6372579] zip_3
│ PASS [mem:   3933, cpu:   1258387] reduce_1
│ PASS [mem:  12423, cpu:   4650244] reduce_2
│ PASS [mem:  17719, cpu:   6176228] reduce_3
│ PASS [mem:  12423, cpu:   4008730] reduce_4
┕━━━━━━━━━━━━━━━━━ 124 tests | 124 passed | 0 failed

┍━ aiken/math ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   2203, cpu:    981996] abs_1
│ PASS [mem:   2605, cpu:   1280473] abs_2
│ PASS [mem:   3405, cpu:   1547959] clamp_1
│ PASS [mem:   3405, cpu:   1547959] clamp_2
│ PASS [mem:   2203, cpu:    981996] clamp_3
│ PASS [mem:   2203, cpu:    981996] max_1
│ PASS [mem:   2203, cpu:    981996] max_2
│ PASS [mem:   2203, cpu:    981996] max_3
│ PASS [mem:   2203, cpu:    981996] min_1
│ PASS [mem:   2203, cpu:    981996] min_2
│ PASS [mem:   2203, cpu:    981996] min_3
│ PASS [mem:  23343, cpu:  12329502] pow_3_5
│ PASS [mem:  16829, cpu:   8666372] pow_7_2
│ PASS [mem:   3403, cpu:   1257996] pow_3__4
│ PASS [mem:   4605, cpu:   1823485] pow_0_0
│ PASS [mem:  17633, cpu:   9149745] pow_513_3
│ PASS [mem:  22539, cpu:  11846129] pow_2_4
│ PASS [mem:  41277, cpu:  22352146] pow_2_42
│ PASS [mem:   4305, cpu:   1754959] pow2_neg
│ PASS [mem:   4709, cpu:   1904626] pow2_0
│ PASS [mem:   4709, cpu:   1904626] pow2_1
│ PASS [mem:   4709, cpu:   1904626] pow2_4
│ PASS [mem:  12325, cpu:   5411224] pow2_42
│ PASS [mem:  35185, cpu:  16072946] pow2_256
│ PASS [mem:  14323, cpu:   7101159] log_10_2
│ PASS [mem:  24341, cpu:  12451843] log_42_2
│ PASS [mem:  20534, cpu:  10342464] log_42_3
│ PASS [mem:   3103, cpu:   1184986] log_5_0
│ PASS [mem:   4305, cpu:   1750475] log_4_4
│ PASS [mem:   5507, cpu:   2316438] log_4_43
│ PASS [mem:   9911, cpu:   4528383] gcd_test1
│ PASS [mem:  12414, cpu:   5846332] gcd_test2
│ PASS [mem:   7408, cpu:   3210434] gcd_test3
│ PASS [mem:   4669, cpu:   2939291] sqrt1
│ PASS [mem:   4669, cpu:   2939291] sqrt2
│ PASS [mem:  18324, cpu:  11212231] sqrt3
│ PASS [mem:  41466, cpu:  26320681] sqrt4
│ PASS [mem: 120810, cpu:  78121081] sqrt5
│ PASS [mem:   2603, cpu:   1975774] sqrt6
┕━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/math/rational ━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  72546, cpu:  35436724] new_1
│ PASS [mem:  56891, cpu:  21710404] numerator_1
│ PASS [mem:  58219, cpu:  22151132] denominator_1
│ PASS [mem:   2297, cpu:   1939798] zero_1
│ PASS [mem:  18493, cpu:   6956013] mul_1
│ PASS [mem:  18493, cpu:   6956013] mul_2
│ PASS [mem: 122045, cpu:  46858551] mul_3
│ PASS [mem:  34175, cpu:  13197282] div_1
│ PASS [mem:  33777, cpu:  13228273] div_2
│ PASS [mem:  20197, cpu:   7646386] add_1
│ PASS [mem:  20197, cpu:   7646386] add_2
│ PASS [mem:  20197, cpu:   7646386] sub_1
│ PASS [mem:  20197, cpu:   7646386] sub_2
│ PASS [mem:  20197, cpu:   7646386] sub_3
│ PASS [mem:  19772, cpu:   9766355] from_int_1
│ PASS [mem:  51415, cpu:  20748115] truncate_1
│ PASS [mem:  51415, cpu:  20748115] floor_1
│ PASS [mem:  79633, cpu:  35087583] ceil_1
│ PASS [mem:  33418, cpu:  14163973] proper_fraction_1
│ PASS [mem:  33418, cpu:  14163973] proper_fraction_2
│ PASS [mem:  33418, cpu:  14163973] proper_fraction_3
│ PASS [mem: 300570, cpu: 114700169] round_1
│ PASS [mem: 415798, cpu: 157008278] round_even_1
│ PASS [mem:  38356, cpu:  16594427] negate_1
│ PASS [mem:  43560, cpu:  18537325] abs_examples
│ PASS [mem:  84466, cpu:  36774723] reciprocal_1
│ PASS [mem:  63953, cpu:  29475660] reduce_1
│ PASS [mem:  78299, cpu:  31979819] compare_1
│ PASS [mem:  51310, cpu:  18482397] compare_with_eq
│ ↳ eq(x, y) ? False
│ ↳ eq(y, x) ? False
│ PASS [mem:  51880, cpu:  18569167] compare_with_neq
│ ↳ neq(x, x) ? False
│ PASS [mem:  50077, cpu:  17902891] compare_with_gte
│ ↳ gte(x, y) ? False
│ PASS [mem:  51310, cpu:  18483819] compare_with_gt
│ ↳ gt(x, y) ? False
│ ↳ gt(x, x) ? False
│ PASS [mem:  50077, cpu:  17902891] compare_with_lte
│ ↳ lte(y, x) ? False
│ PASS [mem:  51310, cpu:  18483819] compare_with_lt
│ ↳ lt(y, x) ? False
│ ↳ lt(x, x) ? False
│ PASS [mem:  87941, cpu:  33143852] arithmetic_mean_1
│ PASS [mem:  87941, cpu:  33143852] arithmetic_mean_2
│ PASS [mem: 155221, cpu:  57100860] arithmetic_mean_3
│ PASS [mem:  61220, cpu:  25039934] geometric_mean1
│ PASS [mem:  34499, cpu:  13216753] geometric_mean2
│ PASS [mem:  34499, cpu:  13216753] geometric_mean3
│ PASS [mem:  67832, cpu:  29356634] geometric_mean4
│ PASS [mem: 162695, cpu:  87384129] geometric_mean5
┕━━━━━━━━━━━━━━━━━━━━━ 42 tests | 42 passed | 0 failed

┍━ aiken/option ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   7563, cpu:   3515147] choice_1
│ PASS [mem:   4533, cpu:   2298165] choice_2
│ PASS [mem:  12025, cpu:   5166553] choice_3
│ PASS [mem:   4367, cpu:   1585556] or_else_1
│ PASS [mem:   5295, cpu:   1966887] or_else_2
│ PASS [mem:   3467, cpu:   2335362] or_try_1
│ PASS [mem:   3467, cpu:   2335362] or_try_2
│ PASS [mem:   5167, cpu:   2663432] map_1
│ PASS [mem:   7193, cpu:   3707706] map_2
│ PASS [mem:   5667, cpu:   2778432] map2_1
│ PASS [mem:   9761, cpu:   4283286] map2_2
│ PASS [mem:  15209, cpu:   6397688] map2_3
│ PASS [mem:   5667, cpu:   2778432] map3_1
│ PASS [mem:   9761, cpu:   4283286] map3_2
│ PASS [mem:  16983, cpu:   7291891] map3_3
│ PASS [mem:   4767, cpu:   2571432] and_then_1
│ PASS [mem:   8695, cpu:   4342669] and_then_2
│ PASS [mem:   7197, cpu:   3595628] and_then_3
│ PASS [mem:   5063, cpu:   2842238] flatten_1
│ PASS [mem:   5063, cpu:   2779308] flatten_2
│ PASS [mem:   4367, cpu:   2479432] flatten_3
│ PASS [mem:   9825, cpu:   4464735] flatten_4
│ PASS [mem:   3867, cpu:   1334277] is_some_1
│ PASS [mem:   4468, cpu:   1552833] is_some_2
│ PASS [mem:   4468, cpu:   1552833] is_none_1
│ PASS [mem:   3867, cpu:   1334277] is_none_2
┕━━━━━━━━━━━━━━ 26 tests | 26 passed | 0 failed

┍━ aiken/string ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1005, cpu:    209100] concat_1
│ PASS [mem:   2915, cpu:    951156] concat_2
│ PASS [mem:   1018, cpu:   1212375] concat_3
│ PASS [mem:    807, cpu:    673693] from_bytearray_1
│ PASS [mem:    807, cpu:    832687] from_bytearray_2
│ PASS [mem:    807, cpu:    832687] from_bytearray_3
│ PASS [mem:  11775, cpu:   3588216] from_int_1
│ PASS [mem:  15983, cpu:   6463871] from_int_2
│ PASS [mem:  19691, cpu:   8989703] from_int_3
│ PASS [mem:  23399, cpu:  11515535] from_int_4
│ PASS [mem:   5045, cpu:   1844709] join_1
│ PASS [mem:  21209, cpu:   9097514] join_2
│ PASS [mem:    805, cpu:    378935] to_bytearray_1
│ PASS [mem:    811, cpu:    464921] to_bytearray_2
│ PASS [mem:    811, cpu:    464921] to_bytearray_3
┕━━━━━━━━━━━━━━━━━━━━ 15 tests | 15 passed | 0 failed

┍━ aiken/transaction/value ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  16985, cpu:   6729757] without_lovelace_1
│ PASS [mem:  32233, cpu:  11959703] without_lovelace_2
│ PASS [mem:  60399, cpu:  24167198] without_lovelace_3
│ PASS [mem:  61194, cpu:  24846185] merge_1
│ PASS [mem: 226241, cpu:  91576858] merge_2
│ PASS [mem:  91876, cpu:  34846261] merge_3
│ PASS [mem:  63322, cpu:  25310185] merge_4
│ PASS [mem:   9667, cpu:   3825486] merge_5
│ PASS [mem:  52478, cpu:  21643944] add_1
│ PASS [mem:  90148, cpu:  37927736] add_2
│ PASS [mem: 106351, cpu:  44086859] add_3
│ PASS [mem:   6435, cpu:   2914132] add_4
│ PASS [mem:  10337, cpu:   4100621] add_5
│ PASS [mem:   5665, cpu:   2603632] flatten_with_1
│ PASS [mem: 127766, cpu:  49572281] flatten_with_2
│ PASS [mem:  11029, cpu:   4173340] from_minted_value_1
│ PASS [mem:  43287, cpu:  15423619] from_minted_value_2
│ PASS [mem: 175413, cpu:  69265974] from_minted_value_3
│ PASS [mem: 185863, cpu:  73500351] from_minted_value_4
│ PASS [mem: 608179, cpu: 242777896] from_minted_value_5
│ PASS [mem:  13823, cpu:   4588948] to_minted_value_1
│ PASS [mem:  47881, cpu:  18424672] to_minted_value_2
┕━━━━━━━━━━━━━━━━━━━━━━━ 22 tests | 22 passed | 0 failed

NEW

┍━ aiken/bytearray ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1003, cpu:    426077] concat_1
│ PASS [mem:   1003, cpu:    426077] concat_2
│ PASS [mem:   1003, cpu:    426077] concat_3
│ PASS [mem:   1003, cpu:    426077] concat_4
│ PASS [mem:   1817, cpu:   1080730] drop_1
│ PASS [mem:   1817, cpu:   1080730] drop_2
│ PASS [mem:   1817, cpu:   1080730] drop_3
│ PASS [mem:   1817, cpu:   1080730] drop_4
│ PASS [mem:   3913, cpu:   1373522] foldl_1
│ PASS [mem:  11337, cpu:   4781534] foldl_2
│ PASS [mem: 122790, cpu:  56467868] foldl_3
│ PASS [mem:  20463, cpu:   9057009] foldl_4
│ PASS [mem:   4315, cpu:   1672473] foldr_1
│ PASS [mem:  11339, cpu:   4989433] foldr_2
│ PASS [mem:  19865, cpu:   9128330] foldr_3
│ PASS [mem:  48729, cpu:  23983953] index_of_1
│ PASS [mem:  58223, cpu:  29250758] index_of_2
│ PASS [mem:  70789, cpu:  35372083] index_of_3
│ PASS [mem:  35493, cpu:  17151075] index_of_4
│ PASS [mem:  17845, cpu:   8040633] index_of_5
│ PASS [mem:    811, cpu:    371033] length_1
│ PASS [mem:    811, cpu:    371033] length_2
│ PASS [mem:   2012, cpu:    727589] is_empty_1
│ PASS [mem:   2613, cpu:    946145] is_empty_2
│ PASS [mem:    805, cpu:    378935] from_string_1
│ PASS [mem:    811, cpu:    464921] from_string_2
│ PASS [mem:   1003, cpu:    646419] push_1
│ PASS [mem:   1003, cpu:    646419] push_2
│ PASS [mem:   1003, cpu:    646419] push_3
│ PASS [mem:   3913, cpu:   1381424] reduce_1
│ PASS [mem:  13843, cpu:   5986775] reduce_2
│ PASS [mem:   2009, cpu:   1332207] slice_1
│ PASS [mem:   2009, cpu:   1332207] slice_2
│ PASS [mem:   2009, cpu:   1332207] slice_3
│ PASS [mem:   2009, cpu:   1332207] slice_4
│ PASS [mem:   2009, cpu:   1332207] slice_5
│ PASS [mem:   1205, cpu:    735253] take_1
│ PASS [mem:   1205, cpu:    735253] take_2
│ PASS [mem:   1205, cpu:    735253] take_3
│ PASS [mem:   1205, cpu:    735253] take_4
│ PASS [mem:    807, cpu:    673693] to_string_1
│ PASS [mem:    807, cpu:    832687] to_string_2
│ PASS [mem: 105611, cpu:  61303963] to_hex_1
│ PASS [mem: 367097, cpu: 214657776] to_hex_2
│ PASS [mem:   6819, cpu:   3655961] test_bit_0
│ PASS [mem:   7420, cpu:   3874517] test_bit_1
│ PASS [mem:   7420, cpu:   3874517] test_bit_2
│ PASS [mem:   7420, cpu:   3874517] test_bit_3
│ PASS [mem:   6819, cpu:   3655961] test_bit_7
│ PASS [mem:   7420, cpu:   3874517] test_bit_8
│ PASS [mem:  29079, cpu:  15348212] test_bit_20_21_22_23
┕━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/cbor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:    811, cpu:   3501009] serialise_1
│ PASS [mem:    811, cpu:   3501009] serialise_2
│ PASS [mem:    809, cpu:   3108339] serialise_3
│ PASS [mem:    829, cpu:   7035039] serialise_4
│ PASS [mem:    839, cpu:   8998389] serialise_5
│ PASS [mem:    829, cpu:   7035039] serialise_6
│ PASS [mem:    819, cpu:   5071689] serialise_7
│ PASS [mem:    809, cpu:   3108339] serialise_8
│ PASS [mem:  20291, cpu:   9127703] diagnostic_1
│ PASS [mem:  31233, cpu:  14363910] diagnostic_2
│ PASS [mem:  58765, cpu:  23385310] diagnostic_3
│ PASS [mem:  11205, cpu:   3377969] diagnostic_4
│ PASS [mem:  44097, cpu:  17090823] diagnostic_5
│ PASS [mem:  64796, cpu:  26166131] diagnostic_6
│ PASS [mem:  46105, cpu:  18670470] diagnostic_7
│ PASS [mem:  53867, cpu:  24792759] diagnostic_8
│ PASS [mem:  31727, cpu:  14771260] diagnostic_9
│ PASS [mem:  11205, cpu:   3384036] diagnostic_10
│ PASS [mem:  65306, cpu:  30437969] diagnostic_11
│ PASS [mem:  87451, cpu:  40462083] diagnostic_12
│ PASS [mem:  74569, cpu:  33869600] diagnostic_13
│ PASS [mem:  25423, cpu:   7980749] diagnostic_14
│ PASS [mem:  24099, cpu:  10842772] diagnostic_15
│ PASS [mem:  58566, cpu:  22271295] diagnostic_16
┕━━━━━━━━━━━━━━━━━ 24 tests | 24 passed | 0 failed

┍━ aiken/dict ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   5665, cpu:   2615997] delete_1
│ PASS [mem:  12355, cpu:   5028121] delete_2
│ PASS [mem:  15347, cpu:   6182171] delete_3
│ PASS [mem:  36191, cpu:  13102301] delete_4
│ PASS [mem:  27704, cpu:  10041267] delete_5
│ PASS [mem:   5665, cpu:   2615997] filter_1
│ PASS [mem:  20273, cpu:   8046435] filter_2
│ PASS [mem:  20373, cpu:   8084291] filter_3
│ PASS [mem:   5433, cpu:   2505165] find_1
│ PASS [mem:  12619, cpu:   5219951] find_2
│ PASS [mem:  12955, cpu:   5268741] find_3
│ PASS [mem:  50281, cpu:  21297522] find_4
│ PASS [mem:   4633, cpu:   1419387] foldr_1
│ PASS [mem:  12285, cpu:   4489799] foldr_2
│ PASS [mem:   4933, cpu:   1488387] fold_1
│ PASS [mem:  13185, cpu:   4696799] fold_2
│ PASS [mem:   5665, cpu:   2615997] from_list_1
│ PASS [mem:  54121, cpu:  21540389] from_list_2
│ PASS [mem:  29892, cpu:  12312695] from_list_3
│ PASS [mem:  49972, cpu:  21755562] from_list_4
│ PASS [mem: 819772, cpu: 373483255] bench_from_list
│ PASS [mem: 175585, cpu:  68517280] bench_from_ascending_list
│ PASS [mem:   5433, cpu:   2505165] get_1
│ PASS [mem:  29665, cpu:  11877419] get_2
│ PASS [mem:  30001, cpu:  11926209] get_3
│ PASS [mem:   4733, cpu:   1314010] has_key_1
│ PASS [mem:  10358, cpu:   3286290] has_key_2
│ PASS [mem:  12091, cpu:   3933200] has_key_3
│ PASS [mem:  22178, cpu:   8024147] has_key_4
│ PASS [mem:  25545, cpu:  10394690] insert_1
│ PASS [mem:  38161, cpu:  15736765] insert_2
│ PASS [mem:  19549, cpu:   8207578] insert_with_1
│ PASS [mem:  47697, cpu:  20806464] insert_with_2
│ PASS [mem:  63797, cpu:  27670165] insert_with_3
│ PASS [mem:   1232, cpu:    428454] is_empty_1
│ PASS [mem:   4765, cpu:   2396632] keys_1
│ PASS [mem:  25501, cpu:  10344135] keys_2
│ PASS [mem:  26785, cpu:  10208161] map_1
│ PASS [mem:  39519, cpu:  15829638] map_2
│ PASS [mem:    601, cpu:   1225811] to_list_1
│ PASS [mem:    601, cpu:   1477531] to_list_2
│ PASS [mem:   3233, cpu:   1097387] size_1
│ PASS [mem:  10095, cpu:   3378758] size_2
│ PASS [mem:  24281, cpu:   9068628] size_3
│ PASS [mem:  30192, cpu:  12381695] union_1
│ PASS [mem:   5965, cpu:   2936717] union_2
│ PASS [mem: 119605, cpu:  48955019] union_3
│ PASS [mem:  87941, cpu:  35280436] union_4
│ PASS [mem:  90969, cpu:  36850044] union_with_1
│ PASS [mem:   4765, cpu:   2396632] values_1
│ PASS [mem:  25501, cpu:  10355125] values_2
┕━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/int ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem: 133547, cpu:  60534844] from_utf8_1
│ PASS [mem:  64303, cpu:  27908185] from_utf8_2
│ PASS [mem: 133547, cpu:  60534844] from_utf8_3
│ PASS [mem:  80356, cpu:  34483758] from_utf8_4
│ PASS [mem:  33493, cpu:  13922866] from_utf8_5
│ PASS [mem:  61194, cpu:  25468213] from_utf8_6
┕━━━━━━━━━━━━━━━━━ 6 tests | 6 passed | 0 failed

┍━ aiken/interval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  16851, cpu:   5590073] contains_1
│ PASS [mem:  28159, cpu:   9926894] contains_2
│ PASS [mem:  28159, cpu:   9922884] contains_3
│ PASS [mem:  28760, cpu:  10145450] contains_4
│ PASS [mem:  28929, cpu:  10359201] contains_5
│ PASS [mem:  28929, cpu:  10355191] contains_6
│ PASS [mem:  29530, cpu:  10577757] contains_7
│ PASS [mem:  38642, cpu:  14203431] contains_8
│ PASS [mem:  38041, cpu:  13984875] contains_9
│ PASS [mem:  38041, cpu:  13984875] contains_10
│ PASS [mem:  38642, cpu:  14211451] contains_11
│ PASS [mem:  17452, cpu:   5808629] contains_12
│ PASS [mem:  18634, cpu:   6632112] is_entirely_after_1
│ PASS [mem:  19235, cpu:   6850668] is_entirely_after_2
│ PASS [mem:  19235, cpu:   6850668] is_entirely_after_3
│ PASS [mem:  21896, cpu:   7880985] is_entirely_after_4
│ PASS [mem:  21295, cpu:   7662429] is_entirely_after_5
│ PASS [mem:  18634, cpu:   6628102] is_entirely_after_6
│ PASS [mem:  13316, cpu:   4403473] is_entirely_after_7
│ PASS [mem:  13316, cpu:   4403473] is_entirely_after_8
│ PASS [mem:  13316, cpu:   4403473] is_entirely_after_9
│ PASS [mem:  19098, cpu:   6806476] is_entirely_before_1
│ PASS [mem:  19699, cpu:   7025032] is_entirely_before_2
│ PASS [mem:  19699, cpu:   7025032] is_entirely_before_3
│ PASS [mem:  21759, cpu:   7836793] is_entirely_before_4
│ PASS [mem:  22360, cpu:   8055349] is_entirely_before_5
│ PASS [mem:  19098, cpu:   6802466] is_entirely_before_6
│ PASS [mem:  13248, cpu:   4421655] is_entirely_before_7
│ PASS [mem:  13248, cpu:   4421655] is_entirely_before_8
│ PASS [mem:  13248, cpu:   4421655] is_entirely_before_9
│ PASS [mem:  74827, cpu:  28713299] intersection_1
│ PASS [mem:  74827, cpu:  28713299] intersection_2
│ PASS [mem:  93744, cpu:  35377495] intersection_3
│ PASS [mem:  97036, cpu:  36249129] intersection_4
│ PASS [mem:  71880, cpu:  28320742] intersection_5
│ PASS [mem:  55593, cpu:  21526794] intersection_6
│ PASS [mem:  74827, cpu:  28713299] hull_1
│ PASS [mem:  68455, cpu:  27064495] hull_2
│ PASS [mem:  63421, cpu:  24863795] hull_3
┕━━━━━━━━━━━━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/list ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  15323, cpu:   5439325] all_1
│ PASS [mem:   7232, cpu:   2364317] all_2
│ PASS [mem:   4433, cpu:   1245010] all_3
│ PASS [mem:   6631, cpu:   2145761] any_1
│ PASS [mem:  15924, cpu:   5657881] any_2
│ PASS [mem:   5034, cpu:   1463566] any_3
│ PASS [mem:   4333, cpu:   1350387] count_empty
│ PASS [mem:  16429, cpu:   6440133] count_all
│ PASS [mem:  16027, cpu:   6129626] count_some
│ PASS [mem:  15223, cpu:   5544702] count_none
│ PASS [mem:  18629, cpu:   7846489] at_1
│ PASS [mem:   4733, cpu:   2344165] at_2
│ PASS [mem:  18629, cpu:   7846489] at_3
│ PASS [mem:   8327, cpu:   3762006] at_4
│ PASS [mem:  17591, cpu:   7430222] at_5
│ PASS [mem:  11249, cpu:   5153046] concat_1
│ PASS [mem:  11249, cpu:   4964256] concat_2
│ PASS [mem:   4265, cpu:   2470422] concat_3
│ PASS [mem:   4665, cpu:   2373632] delete_1
│ PASS [mem:   7163, cpu:   3531699] delete_2
│ PASS [mem:  18447, cpu:   7575794] delete_3
│ PASS [mem:   7163, cpu:   3342909] delete_4
│ PASS [mem:  44215, cpu:  16497251] difference_1
│ PASS [mem:  41717, cpu:  15656960] difference_2
│ PASS [mem:   4965, cpu:   2631422] difference_3
│ PASS [mem:  18345, cpu:   6845120] difference_4
│ PASS [mem:   5367, cpu:   2820585] drop_1
│ PASS [mem:  11671, cpu:   5552093] drop_2
│ PASS [mem:   4265, cpu:   2281632] drop_while_1
│ PASS [mem:  24613, cpu:  10487558] drop_while_2
│ PASS [mem:   6463, cpu:   3811209] drop_while_3
│ PASS [mem:  40565, cpu:  16262682] drop_while_4
│ PASS [mem:   4665, cpu:   2373632] filter_1
│ PASS [mem:  32643, cpu:  15248447] filter_2
│ PASS [mem:  40977, cpu:  17849167] filter_3
│ PASS [mem:   5665, cpu:   2603632] filter_map_1
│ PASS [mem:  54931, cpu:  24297727] filter_map_2
│ PASS [mem:   8027, cpu:   3693006] find_1
│ PASS [mem:  16223, cpu:   6676480] find_2
│ PASS [mem:   4433, cpu:   2275165] find_3
│ PASS [mem:   4265, cpu:   2281632] flat_map_1
│ PASS [mem:  35597, cpu:  13276326] flat_map_2
│ PASS [mem:   3933, cpu:   1258387] foldl_1
│ PASS [mem:  18083, cpu:   6911482] foldl_2
│ PASS [mem:  16933, cpu:   6748892] foldl_3
│ PASS [mem:  16283, cpu:   6497482] foldr_1
│ PASS [mem:  17026, cpu:   7325562] foldr_2
│ PASS [mem:  15433, cpu:   6403892] foldr_3
│ PASS [mem:   4433, cpu:   2275165] init_1
│ PASS [mem:   7725, cpu:   3637500] init_2
│ PASS [mem:  17901, cpu:   7659732] init_3
│ PASS [mem:   6631, cpu:   2145287] has_1
│ PASS [mem:  15924, cpu:   5656459] has_2
│ PASS [mem:   5034, cpu:   1463566] has_3
│ PASS [mem:  16691, cpu:   7223222] index_of_1
│ PASS [mem:  17729, cpu:   7639489] index_of_2
│ PASS [mem:  21023, cpu:   8988330] index_of_3
│ PASS [mem:   4733, cpu:   2344165] index_of_4
│ PASS [mem:   3529, cpu:   2305978] head_1
│ PASS [mem:   2433, cpu:   1815165] head_2
│ PASS [mem:   3933, cpu:   1258387] indexed_foldr_1
│ PASS [mem:  17039, cpu:   7356035] indexed_foldr_2
│ PASS [mem:   4565, cpu:   2350632] indexed_map_1
│ PASS [mem:  24949, cpu:  10572756] indexed_map_2
│ PASS [mem:   2433, cpu:    785010] is_empty_1
│ PASS [mem:   3034, cpu:   1003566] is_empty_2
│ PASS [mem:   4033, cpu:   2183165] last_1
│ PASS [mem:   6193, cpu:   3120514] last_2
│ PASS [mem:  14377, cpu:   6213730] last_3
│ PASS [mem:   3233, cpu:   1097387] length_1
│ PASS [mem:   9431, cpu:   3746426] length_2
│ PASS [mem:   4265, cpu:   2281632] map_1
│ PASS [mem:  17041, cpu:   7597800] map_2
│ PASS [mem:   4565, cpu:   2350632] map2_1
│ PASS [mem:  17937, cpu:   7436142] map2_2
│ PASS [mem:  10649, cpu:   4602317] map2_3
│ PASS [mem:   4865, cpu:   2419632] map3_1
│ PASS [mem:  23897, cpu:   9766380] map3_2
│ PASS [mem:   1365, cpu:   1567701] push_1
│ PASS [mem:   1365, cpu:   1693561] push_2
│ PASS [mem:  15207, cpu:   7360693] range_1
│ PASS [mem:  12339, cpu:   6090830] range_2
│ PASS [mem:   3735, cpu:   2277231] repeat_1
│ PASS [mem:  11643, cpu:   5933790] repeat_2
│ PASS [mem:   4565, cpu:   2350632] reverse_1
│ PASS [mem:  13841, cpu:   5649327] reverse_2
│ PASS [mem:   6761, cpu:   3142503] partition_1
│ PASS [mem:  76941, cpu:  29670843] partition_2
│ PASS [mem:  77373, cpu:  29834614] partition_3
│ PASS [mem:  77373, cpu:  29839354] partition_4
│ PASS [mem:  36437, cpu:  15933783] partition_5
│ PASS [mem:  27869, cpu:  11904193] slice_1
│ PASS [mem:  34605, cpu:  14840125] slice_2
│ PASS [mem:  54463, cpu:  23661293] slice_3
│ PASS [mem:  53497, cpu:  23400965] slice_4
│ PASS [mem:  48227, cpu:  20840361] slice_5
│ PASS [mem:  43603, cpu:  18693686] slice_6
│ PASS [mem: 284747, cpu: 144221960] sort_1
│ PASS [mem:  89205, cpu:  41655984] sort_2
│ PASS [mem: 370815, cpu: 186440082] sort_3
│ PASS [mem:   4665, cpu:   2373632] sort_4
│ PASS [mem:   7061, cpu:   3211503] span_1
│ PASS [mem:  24135, cpu:  10048326] span_2
│ PASS [mem:  10223, cpu:   4633012] span_3
│ PASS [mem:  27929, cpu:  11523264] span_4
│ PASS [mem:   3761, cpu:   2515652] tail_1
│ PASS [mem:   2433, cpu:   1815165] tail_2
│ PASS [mem:   6167, cpu:   3004585] take_1
│ PASS [mem:  13799, cpu:   6292507] take_2
│ PASS [mem:   4665, cpu:   2373632] take_while_1
│ PASS [mem:  30133, cpu:  12016023] take_while_2
│ PASS [mem:   7163, cpu:   3342909] take_while_3
│ PASS [mem:  50605, cpu:  19718912] take_while_4
│ PASS [mem:   4665, cpu:   2373632] unique_1
│ PASS [mem: 415774, cpu: 151359665] unique_2
│ PASS [mem:   6361, cpu:   3050503] unzip_1
│ PASS [mem:  17657, cpu:   7633111] unzip_2
│ PASS [mem:   4565, cpu:   2362997] zip_1
│ PASS [mem:   6693, cpu:   3126139] zip_2
│ PASS [mem:  15405, cpu:   6372579] zip_3
│ PASS [mem:   3933, cpu:   1258387] reduce_1
│ PASS [mem:  12423, cpu:   4650244] reduce_2
│ PASS [mem:  17719, cpu:   6176228] reduce_3
│ PASS [mem:  12423, cpu:   4008730] reduce_4
┕━━━━━━━━━━━━━━━━━ 124 tests | 124 passed | 0 failed

┍━ aiken/math ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1903, cpu:    912996] abs_1
│ PASS [mem:   2305, cpu:   1211473] abs_2
│ PASS [mem:   3405, cpu:   1547959] clamp_1
│ PASS [mem:   3405, cpu:   1547959] clamp_2
│ PASS [mem:   2203, cpu:    981996] clamp_3
│ PASS [mem:   1903, cpu:    912996] max_1
│ PASS [mem:   1903, cpu:    912996] max_2
│ PASS [mem:   1903, cpu:    912996] max_3
│ PASS [mem:   1903, cpu:    912996] min_1
│ PASS [mem:   1903, cpu:    912996] min_2
│ PASS [mem:   1903, cpu:    912996] min_3
│ PASS [mem:  25343, cpu:  12789502] pow_3_5
│ PASS [mem:  18329, cpu:   9011372] pow_7_2
│ PASS [mem:   3703, cpu:   1326996] pow_3__4
│ PASS [mem:   4905, cpu:   1892485] pow_0_0
│ PASS [mem:  18933, cpu:   9448745] pow_513_3
│ PASS [mem:  24739, cpu:  12352129] pow_2_4
│ PASS [mem:  45177, cpu:  23249146] pow_2_42
│ PASS [mem:   4405, cpu:   1777959] pow2_neg
│ PASS [mem:   4809, cpu:   1927626] pow2_0
│ PASS [mem:   4809, cpu:   1927626] pow2_1
│ PASS [mem:   4809, cpu:   1927626] pow2_4
│ PASS [mem:  12625, cpu:   5480224] pow2_42
│ PASS [mem:  36085, cpu:  16279946] pow2_256
│ PASS [mem:  14323, cpu:   7101159] log_10_2
│ PASS [mem:  24341, cpu:  12451843] log_42_2
│ PASS [mem:  20034, cpu:  10227464] log_42_3
│ PASS [mem:   3403, cpu:   1253986] log_5_0
│ PASS [mem:   4305, cpu:   1750475] log_4_4
│ PASS [mem:   5507, cpu:   2316438] log_4_43
│ PASS [mem:   9911, cpu:   4528383] gcd_test1
│ PASS [mem:  12414, cpu:   5846332] gcd_test2
│ PASS [mem:   7408, cpu:   3210434] gcd_test3
│ PASS [mem:   4969, cpu:   3008291] sqrt1
│ PASS [mem:   4969, cpu:   3008291] sqrt2
│ PASS [mem:  18324, cpu:  11212231] sqrt3
│ PASS [mem:  41466, cpu:  26320681] sqrt4
│ PASS [mem: 120810, cpu:  78121081] sqrt5
│ PASS [mem:   2603, cpu:   1975774] sqrt6
┕━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/math/rational ━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  60974, cpu:  31799441] new_1
│ PASS [mem:  55391, cpu:  21365404] numerator_1
│ PASS [mem:  56219, cpu:  21691132] denominator_1
│ PASS [mem:   2297, cpu:   1939798] zero_1
│ PASS [mem:  16693, cpu:   6542013] mul_1
│ PASS [mem:  16693, cpu:   6542013] mul_2
│ PASS [mem: 109845, cpu:  44052551] mul_3
│ PASS [mem:  30675, cpu:  12392282] div_1
│ PASS [mem:  30377, cpu:  12446273] div_2
│ PASS [mem:  17897, cpu:   7117386] add_1
│ PASS [mem:  17897, cpu:   7117386] add_2
│ PASS [mem:  17897, cpu:   7117386] sub_1
│ PASS [mem:  17897, cpu:   7117386] sub_2
│ PASS [mem:  17897, cpu:   7117386] sub_3
│ PASS [mem:  19072, cpu:   9605355] from_int_1
│ PASS [mem:  51415, cpu:  20748115] truncate_1
│ PASS [mem:  51415, cpu:  20748115] floor_1
│ PASS [mem:  79833, cpu:  35133583] ceil_1
│ PASS [mem:  30618, cpu:  13519973] proper_fraction_1
│ PASS [mem:  30618, cpu:  13519973] proper_fraction_2
│ PASS [mem:  30618, cpu:  13519973] proper_fraction_3
│ PASS [mem: 270868, cpu: 107239914] round_1
│ PASS [mem: 369294, cpu: 145477546] round_even_1
│ PASS [mem:  36856, cpu:  16249427] negate_1
│ PASS [mem:  35178, cpu:  15697444] abs_examples
│ PASS [mem:  78966, cpu:  35509723] reciprocal_1
│ PASS [mem:  61753, cpu:  28969660] reduce_1
│ PASS [mem:  69899, cpu:  30047819] compare_1
│ PASS [mem:  47910, cpu:  17700397] compare_with_eq
│ ↳ eq(x, y) ? False
│ ↳ eq(y, x) ? False
│ PASS [mem:  48480, cpu:  17787167] compare_with_neq
│ ↳ neq(x, x) ? False
│ PASS [mem:  46677, cpu:  17120891] compare_with_gte
│ ↳ gte(x, y) ? False
│ PASS [mem:  47910, cpu:  17701819] compare_with_gt
│ ↳ gt(x, y) ? False
│ ↳ gt(x, x) ? False
│ PASS [mem:  46677, cpu:  17120891] compare_with_lte
│ ↳ lte(y, x) ? False
│ PASS [mem:  47910, cpu:  17701819] compare_with_lt
│ ↳ lt(y, x) ? False
│ ↳ lt(x, x) ? False
│ PASS [mem:  78541, cpu:  30981852] arithmetic_mean_1
│ PASS [mem:  78541, cpu:  30981852] arithmetic_mean_2
│ PASS [mem: 136821, cpu:  52868860] arithmetic_mean_3
│ PASS [mem:  55520, cpu:  23728934] geometric_mean1
│ PASS [mem:  31299, cpu:  12480753] geometric_mean2
│ PASS [mem:  31299, cpu:  12480753] geometric_mean3
│ PASS [mem:  62132, cpu:  28045634] geometric_mean4
│ PASS [mem: 155695, cpu:  85774129] geometric_mean5
┕━━━━━━━━━━━━━━━━━━━━━ 42 tests | 42 passed | 0 failed

┍━ aiken/option ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   7263, cpu:   3446147] choice_1
│ PASS [mem:   4533, cpu:   2298165] choice_2
│ PASS [mem:  11425, cpu:   5028553] choice_3
│ PASS [mem:   3467, cpu:   1378556] or_else_1
│ PASS [mem:   4395, cpu:   1759887] or_else_2
│ PASS [mem:   2567, cpu:   2128362] or_try_1
│ PASS [mem:   2567, cpu:   2128362] or_try_2
│ PASS [mem:   4267, cpu:   2456432] map_1
│ PASS [mem:   6293, cpu:   3500706] map_2
│ PASS [mem:   5667, cpu:   2778432] map2_1
│ PASS [mem:   8961, cpu:   4099286] map2_2
│ PASS [mem:  13809, cpu:   6075688] map2_3
│ PASS [mem:   5967, cpu:   2847432] map3_1
│ PASS [mem:   9261, cpu:   4168286] map3_2
│ PASS [mem:  15383, cpu:   6923891] map3_3
│ PASS [mem:   4167, cpu:   2433432] and_then_1
│ PASS [mem:   8095, cpu:   4204669] and_then_2
│ PASS [mem:   6597, cpu:   3457628] and_then_3
│ PASS [mem:   4163, cpu:   2635238] flatten_1
│ PASS [mem:   4163, cpu:   2572308] flatten_2
│ PASS [mem:   3467, cpu:   2272432] flatten_3
│ PASS [mem:   9325, cpu:   4349735] flatten_4
│ PASS [mem:   3267, cpu:   1196277] is_some_1
│ PASS [mem:   3868, cpu:   1414833] is_some_2
│ PASS [mem:   3868, cpu:   1414833] is_none_1
│ PASS [mem:   3267, cpu:   1196277] is_none_2
┕━━━━━━━━━━━━━━ 26 tests | 26 passed | 0 failed

┍━ aiken/string ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1005, cpu:    209100] concat_1
│ PASS [mem:   2915, cpu:    951156] concat_2
│ PASS [mem:   1018, cpu:   1212375] concat_3
│ PASS [mem:    807, cpu:    673693] from_bytearray_1
│ PASS [mem:    807, cpu:    832687] from_bytearray_2
│ PASS [mem:    807, cpu:    832687] from_bytearray_3
│ PASS [mem:  12775, cpu:   3818216] from_int_1
│ PASS [mem:  16783, cpu:   6647871] from_int_2
│ PASS [mem:  20291, cpu:   9127703] from_int_3
│ PASS [mem:  23799, cpu:  11607535] from_int_4
│ PASS [mem:   5045, cpu:   1844709] join_1
│ PASS [mem:  20309, cpu:   8890514] join_2
│ PASS [mem:    805, cpu:    378935] to_bytearray_1
│ PASS [mem:    811, cpu:    464921] to_bytearray_2
│ PASS [mem:    811, cpu:    464921] to_bytearray_3
┕━━━━━━━━━━━━━━━━━━━━ 15 tests | 15 passed | 0 failed

┍━ aiken/transaction/value ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  17485, cpu:   6844757] without_lovelace_1
│ PASS [mem:  32733, cpu:  12074703] without_lovelace_2
│ PASS [mem:  54441, cpu:  21998289] without_lovelace_3
│ PASS [mem:  61094, cpu:  24823185] merge_1
│ PASS [mem: 222941, cpu:  90817858] merge_2
│ PASS [mem:  89976, cpu:  34409261] merge_3
│ PASS [mem:  62222, cpu:  25057185] merge_4
│ PASS [mem:  10667, cpu:   4055486] merge_5
│ PASS [mem:  52478, cpu:  21643944] add_1
│ PASS [mem:  89548, cpu:  37789736] add_2
│ PASS [mem: 104251, cpu:  43603859] add_3
│ PASS [mem:   6735, cpu:   2983132] add_4
│ PASS [mem:  10937, cpu:   4238621] add_5
│ PASS [mem:   5665, cpu:   2603632] flatten_with_1
│ PASS [mem: 126666, cpu:  49319281] flatten_with_2
│ PASS [mem:  10429, cpu:   4035340] from_minted_value_1
│ PASS [mem:  42887, cpu:  15331619] from_minted_value_2
│ PASS [mem: 175313, cpu:  69242974] from_minted_value_3
│ PASS [mem: 186263, cpu:  73592351] from_minted_value_4
│ PASS [mem: 610379, cpu: 243283896] from_minted_value_5
│ PASS [mem:  14523, cpu:   4749948] to_minted_value_1
│ PASS [mem:  46881, cpu:  18194672] to_minted_value_2
┕━━━━━━━━━━━━━━━━━━━━━━━ 22 tests | 22 passed | 0 failed

@MicroProofs
Copy link
Member Author

MicroProofs commented Mar 2, 2024

I had to tweak the inliner optimization to make it a little more specialized. Using the existing one on main resulted in worse performance in all case of the std lib tests.
NEW

┍━ aiken/bytearray ━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1003, cpu:    426077] concat_1
│ PASS [mem:   1003, cpu:    426077] concat_2
│ PASS [mem:   1003, cpu:    426077] concat_3
│ PASS [mem:   1003, cpu:    426077] concat_4
│ PASS [mem:   1817, cpu:   1080730] drop_1
│ PASS [mem:   1817, cpu:   1080730] drop_2
│ PASS [mem:   1817, cpu:   1080730] drop_3
│ PASS [mem:   1817, cpu:   1080730] drop_4
│ PASS [mem:   3913, cpu:   1373522] foldl_1
│ PASS [mem:  11337, cpu:   4781534] foldl_2
│ PASS [mem: 122790, cpu:  56467868] foldl_3
│ PASS [mem:  20463, cpu:   9057009] foldl_4
│ PASS [mem:   4315, cpu:   1672473] foldr_1
│ PASS [mem:  11339, cpu:   4989433] foldr_2
│ PASS [mem:  19865, cpu:   9128330] foldr_3
│ PASS [mem:  48729, cpu:  23983953] index_of_1
│ PASS [mem:  58223, cpu:  29250758] index_of_2
│ PASS [mem:  70789, cpu:  35372083] index_of_3
│ PASS [mem:  35493, cpu:  17151075] index_of_4
│ PASS [mem:  17845, cpu:   8040633] index_of_5
│ PASS [mem:    811, cpu:    371033] length_1
│ PASS [mem:    811, cpu:    371033] length_2
│ PASS [mem:   2012, cpu:    727589] is_empty_1
│ PASS [mem:   2613, cpu:    946145] is_empty_2
│ PASS [mem:    805, cpu:    378935] from_string_1
│ PASS [mem:    811, cpu:    464921] from_string_2
│ PASS [mem:   1003, cpu:    646419] push_1
│ PASS [mem:   1003, cpu:    646419] push_2
│ PASS [mem:   1003, cpu:    646419] push_3
│ PASS [mem:   3913, cpu:   1381424] reduce_1
│ PASS [mem:  13843, cpu:   5986775] reduce_2
│ PASS [mem:   2009, cpu:   1332207] slice_1
│ PASS [mem:   2009, cpu:   1332207] slice_2
│ PASS [mem:   2009, cpu:   1332207] slice_3
│ PASS [mem:   2009, cpu:   1332207] slice_4
│ PASS [mem:   2009, cpu:   1332207] slice_5
│ PASS [mem:   1205, cpu:    735253] take_1
│ PASS [mem:   1205, cpu:    735253] take_2
│ PASS [mem:   1205, cpu:    735253] take_3
│ PASS [mem:   1205, cpu:    735253] take_4
│ PASS [mem:    807, cpu:    673693] to_string_1
│ PASS [mem:    807, cpu:    832687] to_string_2
│ PASS [mem: 105611, cpu:  61303963] to_hex_1
│ PASS [mem: 367097, cpu: 214657776] to_hex_2
│ PASS [mem:   6819, cpu:   3655961] test_bit_0
│ PASS [mem:   7420, cpu:   3874517] test_bit_1
│ PASS [mem:   7420, cpu:   3874517] test_bit_2
│ PASS [mem:   7420, cpu:   3874517] test_bit_3
│ PASS [mem:   6819, cpu:   3655961] test_bit_7
│ PASS [mem:   7420, cpu:   3874517] test_bit_8
│ PASS [mem:  29079, cpu:  15348212] test_bit_20_21_22_23
┕━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/cbor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:    811, cpu:   3501009] serialise_1
│ PASS [mem:    811, cpu:   3501009] serialise_2
│ PASS [mem:    809, cpu:   3108339] serialise_3
│ PASS [mem:    829, cpu:   7035039] serialise_4
│ PASS [mem:    839, cpu:   8998389] serialise_5
│ PASS [mem:    829, cpu:   7035039] serialise_6
│ PASS [mem:    819, cpu:   5071689] serialise_7
│ PASS [mem:    809, cpu:   3108339] serialise_8
│ PASS [mem:  20291, cpu:   9127703] diagnostic_1
│ PASS [mem:  31233, cpu:  14363910] diagnostic_2
│ PASS [mem:  58765, cpu:  23385310] diagnostic_3
│ PASS [mem:  11205, cpu:   3377969] diagnostic_4
│ PASS [mem:  44097, cpu:  17090823] diagnostic_5
│ PASS [mem:  64796, cpu:  26166131] diagnostic_6
│ PASS [mem:  46105, cpu:  18670470] diagnostic_7
│ PASS [mem:  53867, cpu:  24792759] diagnostic_8
│ PASS [mem:  31727, cpu:  14771260] diagnostic_9
│ PASS [mem:  11205, cpu:   3384036] diagnostic_10
│ PASS [mem:  65306, cpu:  30437969] diagnostic_11
│ PASS [mem:  87451, cpu:  40462083] diagnostic_12
│ PASS [mem:  74569, cpu:  33869600] diagnostic_13
│ PASS [mem:  25423, cpu:   7980749] diagnostic_14
│ PASS [mem:  24099, cpu:  10842772] diagnostic_15
│ PASS [mem:  58566, cpu:  22271295] diagnostic_16
┕━━━━━━━━━━━━━━━━━ 24 tests | 24 passed | 0 failed

┍━ aiken/dict ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   5665, cpu:   2615997] delete_1
│ PASS [mem:  12355, cpu:   5028121] delete_2
│ PASS [mem:  15347, cpu:   6182171] delete_3
│ PASS [mem:  36191, cpu:  13102301] delete_4
│ PASS [mem:  27704, cpu:  10041267] delete_5
│ PASS [mem:   5665, cpu:   2615997] filter_1
│ PASS [mem:  20273, cpu:   8046435] filter_2
│ PASS [mem:  20373, cpu:   8084291] filter_3
│ PASS [mem:   5433, cpu:   2505165] find_1
│ PASS [mem:  12619, cpu:   5219951] find_2
│ PASS [mem:  12955, cpu:   5268741] find_3
│ PASS [mem:  50281, cpu:  21297522] find_4
│ PASS [mem:   4633, cpu:   1419387] foldr_1
│ PASS [mem:  12285, cpu:   4489799] foldr_2
│ PASS [mem:   4933, cpu:   1488387] fold_1
│ PASS [mem:  13185, cpu:   4696799] fold_2
│ PASS [mem:   5665, cpu:   2615997] from_list_1
│ PASS [mem:  54121, cpu:  21540389] from_list_2
│ PASS [mem:  29892, cpu:  12312695] from_list_3
│ PASS [mem:  49972, cpu:  21755562] from_list_4
│ PASS [mem: 819772, cpu: 373483255] bench_from_list
│ PASS [mem: 175585, cpu:  68517280] bench_from_ascending_list
│ PASS [mem:   5433, cpu:   2505165] get_1
│ PASS [mem:  29665, cpu:  11877419] get_2
│ PASS [mem:  30001, cpu:  11926209] get_3
│ PASS [mem:   4733, cpu:   1314010] has_key_1
│ PASS [mem:  10358, cpu:   3286290] has_key_2
│ PASS [mem:  12091, cpu:   3933200] has_key_3
│ PASS [mem:  22178, cpu:   8024147] has_key_4
│ PASS [mem:  25545, cpu:  10394690] insert_1
│ PASS [mem:  38161, cpu:  15736765] insert_2
│ PASS [mem:  19549, cpu:   8207578] insert_with_1
│ PASS [mem:  47697, cpu:  20806464] insert_with_2
│ PASS [mem:  63797, cpu:  27670165] insert_with_3
│ PASS [mem:   1232, cpu:    428454] is_empty_1
│ PASS [mem:   4765, cpu:   2396632] keys_1
│ PASS [mem:  25501, cpu:  10344135] keys_2
│ PASS [mem:  26785, cpu:  10208161] map_1
│ PASS [mem:  39519, cpu:  15829638] map_2
│ PASS [mem:    601, cpu:   1225811] to_list_1
│ PASS [mem:    601, cpu:   1477531] to_list_2
│ PASS [mem:   3233, cpu:   1097387] size_1
│ PASS [mem:  10095, cpu:   3378758] size_2
│ PASS [mem:  24281, cpu:   9068628] size_3
│ PASS [mem:  30192, cpu:  12381695] union_1
│ PASS [mem:   5965, cpu:   2936717] union_2
│ PASS [mem: 119605, cpu:  48955019] union_3
│ PASS [mem:  87941, cpu:  35280436] union_4
│ PASS [mem:  90969, cpu:  36850044] union_with_1
│ PASS [mem:   4765, cpu:   2396632] values_1
│ PASS [mem:  25501, cpu:  10355125] values_2
┕━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/int ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem: 133547, cpu:  60534844] from_utf8_1
│ PASS [mem:  64303, cpu:  27908185] from_utf8_2
│ PASS [mem: 133547, cpu:  60534844] from_utf8_3
│ PASS [mem:  80356, cpu:  34483758] from_utf8_4
│ PASS [mem:  33493, cpu:  13922866] from_utf8_5
│ PASS [mem:  61194, cpu:  25468213] from_utf8_6
┕━━━━━━━━━━━━━━━━━ 6 tests | 6 passed | 0 failed

┍━ aiken/interval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  16851, cpu:   5590073] contains_1
│ PASS [mem:  28159, cpu:   9926894] contains_2
│ PASS [mem:  28159, cpu:   9922884] contains_3
│ PASS [mem:  28760, cpu:  10145450] contains_4
│ PASS [mem:  28929, cpu:  10359201] contains_5
│ PASS [mem:  28929, cpu:  10355191] contains_6
│ PASS [mem:  29530, cpu:  10577757] contains_7
│ PASS [mem:  38642, cpu:  14203431] contains_8
│ PASS [mem:  38041, cpu:  13984875] contains_9
│ PASS [mem:  38041, cpu:  13984875] contains_10
│ PASS [mem:  38642, cpu:  14211451] contains_11
│ PASS [mem:  17452, cpu:   5808629] contains_12
│ PASS [mem:  18634, cpu:   6632112] is_entirely_after_1
│ PASS [mem:  19235, cpu:   6850668] is_entirely_after_2
│ PASS [mem:  19235, cpu:   6850668] is_entirely_after_3
│ PASS [mem:  21896, cpu:   7880985] is_entirely_after_4
│ PASS [mem:  21295, cpu:   7662429] is_entirely_after_5
│ PASS [mem:  18634, cpu:   6628102] is_entirely_after_6
│ PASS [mem:  13316, cpu:   4403473] is_entirely_after_7
│ PASS [mem:  13316, cpu:   4403473] is_entirely_after_8
│ PASS [mem:  13316, cpu:   4403473] is_entirely_after_9
│ PASS [mem:  19098, cpu:   6806476] is_entirely_before_1
│ PASS [mem:  19699, cpu:   7025032] is_entirely_before_2
│ PASS [mem:  19699, cpu:   7025032] is_entirely_before_3
│ PASS [mem:  21759, cpu:   7836793] is_entirely_before_4
│ PASS [mem:  22360, cpu:   8055349] is_entirely_before_5
│ PASS [mem:  19098, cpu:   6802466] is_entirely_before_6
│ PASS [mem:  13248, cpu:   4421655] is_entirely_before_7
│ PASS [mem:  13248, cpu:   4421655] is_entirely_before_8
│ PASS [mem:  13248, cpu:   4421655] is_entirely_before_9
│ PASS [mem:  74827, cpu:  28713299] intersection_1
│ PASS [mem:  74827, cpu:  28713299] intersection_2
│ PASS [mem:  93744, cpu:  35377495] intersection_3
│ PASS [mem:  97036, cpu:  36249129] intersection_4
│ PASS [mem:  71880, cpu:  28320742] intersection_5
│ PASS [mem:  55593, cpu:  21526794] intersection_6
│ PASS [mem:  74827, cpu:  28713299] hull_1
│ PASS [mem:  68455, cpu:  27064495] hull_2
│ PASS [mem:  63421, cpu:  24863795] hull_3
┕━━━━━━━━━━━━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/list ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  15323, cpu:   5439325] all_1
│ PASS [mem:   7232, cpu:   2364317] all_2
│ PASS [mem:   4433, cpu:   1245010] all_3
│ PASS [mem:   6631, cpu:   2145761] any_1
│ PASS [mem:  15924, cpu:   5657881] any_2
│ PASS [mem:   5034, cpu:   1463566] any_3
│ PASS [mem:   4333, cpu:   1350387] count_empty
│ PASS [mem:  16429, cpu:   6440133] count_all
│ PASS [mem:  16027, cpu:   6129626] count_some
│ PASS [mem:  15223, cpu:   5544702] count_none
│ PASS [mem:  18629, cpu:   7846489] at_1
│ PASS [mem:   4733, cpu:   2344165] at_2
│ PASS [mem:  18629, cpu:   7846489] at_3
│ PASS [mem:   8327, cpu:   3762006] at_4
│ PASS [mem:  17591, cpu:   7430222] at_5
│ PASS [mem:  11249, cpu:   5153046] concat_1
│ PASS [mem:  11249, cpu:   4964256] concat_2
│ PASS [mem:   4265, cpu:   2470422] concat_3
│ PASS [mem:   4665, cpu:   2373632] delete_1
│ PASS [mem:   7163, cpu:   3531699] delete_2
│ PASS [mem:  18447, cpu:   7575794] delete_3
│ PASS [mem:   7163, cpu:   3342909] delete_4
│ PASS [mem:  44215, cpu:  16497251] difference_1
│ PASS [mem:  41717, cpu:  15656960] difference_2
│ PASS [mem:   4965, cpu:   2631422] difference_3
│ PASS [mem:  18345, cpu:   6845120] difference_4
│ PASS [mem:   5367, cpu:   2820585] drop_1
│ PASS [mem:  11671, cpu:   5552093] drop_2
│ PASS [mem:   4265, cpu:   2281632] drop_while_1
│ PASS [mem:  24613, cpu:  10487558] drop_while_2
│ PASS [mem:   6463, cpu:   3811209] drop_while_3
│ PASS [mem:  40565, cpu:  16262682] drop_while_4
│ PASS [mem:   4665, cpu:   2373632] filter_1
│ PASS [mem:  32643, cpu:  15248447] filter_2
│ PASS [mem:  40977, cpu:  17849167] filter_3
│ PASS [mem:   5665, cpu:   2603632] filter_map_1
│ PASS [mem:  54931, cpu:  24297727] filter_map_2
│ PASS [mem:   8027, cpu:   3693006] find_1
│ PASS [mem:  16223, cpu:   6676480] find_2
│ PASS [mem:   4433, cpu:   2275165] find_3
│ PASS [mem:   4265, cpu:   2281632] flat_map_1
│ PASS [mem:  35597, cpu:  13276326] flat_map_2
│ PASS [mem:   3933, cpu:   1258387] foldl_1
│ PASS [mem:  18083, cpu:   6911482] foldl_2
│ PASS [mem:  16933, cpu:   6748892] foldl_3
│ PASS [mem:  16283, cpu:   6497482] foldr_1
│ PASS [mem:  17026, cpu:   7325562] foldr_2
│ PASS [mem:  15433, cpu:   6403892] foldr_3
│ PASS [mem:   4433, cpu:   2275165] init_1
│ PASS [mem:   7725, cpu:   3637500] init_2
│ PASS [mem:  17901, cpu:   7659732] init_3
│ PASS [mem:   6631, cpu:   2145287] has_1
│ PASS [mem:  15924, cpu:   5656459] has_2
│ PASS [mem:   5034, cpu:   1463566] has_3
│ PASS [mem:  16691, cpu:   7223222] index_of_1
│ PASS [mem:  17729, cpu:   7639489] index_of_2
│ PASS [mem:  21023, cpu:   8988330] index_of_3
│ PASS [mem:   4733, cpu:   2344165] index_of_4
│ PASS [mem:   3529, cpu:   2305978] head_1
│ PASS [mem:   2433, cpu:   1815165] head_2
│ PASS [mem:   3933, cpu:   1258387] indexed_foldr_1
│ PASS [mem:  17039, cpu:   7356035] indexed_foldr_2
│ PASS [mem:   4565, cpu:   2350632] indexed_map_1
│ PASS [mem:  24949, cpu:  10572756] indexed_map_2
│ PASS [mem:   2433, cpu:    785010] is_empty_1
│ PASS [mem:   3034, cpu:   1003566] is_empty_2
│ PASS [mem:   4033, cpu:   2183165] last_1
│ PASS [mem:   6193, cpu:   3120514] last_2
│ PASS [mem:  14377, cpu:   6213730] last_3
│ PASS [mem:   3233, cpu:   1097387] length_1
│ PASS [mem:   9431, cpu:   3746426] length_2
│ PASS [mem:   4265, cpu:   2281632] map_1
│ PASS [mem:  17041, cpu:   7597800] map_2
│ PASS [mem:   4565, cpu:   2350632] map2_1
│ PASS [mem:  17937, cpu:   7436142] map2_2
│ PASS [mem:  10649, cpu:   4602317] map2_3
│ PASS [mem:   4865, cpu:   2419632] map3_1
│ PASS [mem:  23897, cpu:   9766380] map3_2
│ PASS [mem:   1365, cpu:   1567701] push_1
│ PASS [mem:   1365, cpu:   1693561] push_2
│ PASS [mem:  15207, cpu:   7360693] range_1
│ PASS [mem:  12339, cpu:   6090830] range_2
│ PASS [mem:   3735, cpu:   2277231] repeat_1
│ PASS [mem:  11643, cpu:   5933790] repeat_2
│ PASS [mem:   4565, cpu:   2350632] reverse_1
│ PASS [mem:  13841, cpu:   5649327] reverse_2
│ PASS [mem:   6761, cpu:   3142503] partition_1
│ PASS [mem:  76941, cpu:  29670843] partition_2
│ PASS [mem:  77373, cpu:  29834614] partition_3
│ PASS [mem:  77373, cpu:  29839354] partition_4
│ PASS [mem:  36437, cpu:  15933783] partition_5
│ PASS [mem:  27869, cpu:  11904193] slice_1
│ PASS [mem:  34605, cpu:  14840125] slice_2
│ PASS [mem:  54463, cpu:  23661293] slice_3
│ PASS [mem:  53497, cpu:  23400965] slice_4
│ PASS [mem:  48227, cpu:  20840361] slice_5
│ PASS [mem:  43603, cpu:  18693686] slice_6
│ PASS [mem: 284747, cpu: 144221960] sort_1
│ PASS [mem:  89205, cpu:  41655984] sort_2
│ PASS [mem: 370815, cpu: 186440082] sort_3
│ PASS [mem:   4665, cpu:   2373632] sort_4
│ PASS [mem:   7061, cpu:   3211503] span_1
│ PASS [mem:  24135, cpu:  10048326] span_2
│ PASS [mem:  10223, cpu:   4633012] span_3
│ PASS [mem:  27929, cpu:  11523264] span_4
│ PASS [mem:   3761, cpu:   2515652] tail_1
│ PASS [mem:   2433, cpu:   1815165] tail_2
│ PASS [mem:   6167, cpu:   3004585] take_1
│ PASS [mem:  13799, cpu:   6292507] take_2
│ PASS [mem:   4665, cpu:   2373632] take_while_1
│ PASS [mem:  30133, cpu:  12016023] take_while_2
│ PASS [mem:   7163, cpu:   3342909] take_while_3
│ PASS [mem:  50605, cpu:  19718912] take_while_4
│ PASS [mem:   4665, cpu:   2373632] unique_1
│ PASS [mem: 415774, cpu: 151359665] unique_2
│ PASS [mem:   6361, cpu:   3050503] unzip_1
│ PASS [mem:  17657, cpu:   7633111] unzip_2
│ PASS [mem:   4565, cpu:   2362997] zip_1
│ PASS [mem:   6693, cpu:   3126139] zip_2
│ PASS [mem:  15405, cpu:   6372579] zip_3
│ PASS [mem:   3933, cpu:   1258387] reduce_1
│ PASS [mem:  12423, cpu:   4650244] reduce_2
│ PASS [mem:  17719, cpu:   6176228] reduce_3
│ PASS [mem:  12423, cpu:   4008730] reduce_4
┕━━━━━━━━━━━━━━━━━ 124 tests | 124 passed | 0 failed

┍━ aiken/math ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1903, cpu:    912996] abs_1
│ PASS [mem:   2305, cpu:   1211473] abs_2
│ PASS [mem:   3405, cpu:   1547959] clamp_1
│ PASS [mem:   3405, cpu:   1547959] clamp_2
│ PASS [mem:   2203, cpu:    981996] clamp_3
│ PASS [mem:   1903, cpu:    912996] max_1
│ PASS [mem:   1903, cpu:    912996] max_2
│ PASS [mem:   1903, cpu:    912996] max_3
│ PASS [mem:   1903, cpu:    912996] min_1
│ PASS [mem:   1903, cpu:    912996] min_2
│ PASS [mem:   1903, cpu:    912996] min_3
│ PASS [mem:  25343, cpu:  12789502] pow_3_5
│ PASS [mem:  18329, cpu:   9011372] pow_7_2
│ PASS [mem:   3703, cpu:   1326996] pow_3__4
│ PASS [mem:   4905, cpu:   1892485] pow_0_0
│ PASS [mem:  18933, cpu:   9448745] pow_513_3
│ PASS [mem:  24739, cpu:  12352129] pow_2_4
│ PASS [mem:  45177, cpu:  23249146] pow_2_42
│ PASS [mem:   4405, cpu:   1777959] pow2_neg
│ PASS [mem:   4809, cpu:   1927626] pow2_0
│ PASS [mem:   4809, cpu:   1927626] pow2_1
│ PASS [mem:   4809, cpu:   1927626] pow2_4
│ PASS [mem:  12625, cpu:   5480224] pow2_42
│ PASS [mem:  36085, cpu:  16279946] pow2_256
│ PASS [mem:  14323, cpu:   7101159] log_10_2
│ PASS [mem:  24341, cpu:  12451843] log_42_2
│ PASS [mem:  20034, cpu:  10227464] log_42_3
│ PASS [mem:   3403, cpu:   1253986] log_5_0
│ PASS [mem:   4305, cpu:   1750475] log_4_4
│ PASS [mem:   5507, cpu:   2316438] log_4_43
│ PASS [mem:   9911, cpu:   4528383] gcd_test1
│ PASS [mem:  12414, cpu:   5846332] gcd_test2
│ PASS [mem:   7408, cpu:   3210434] gcd_test3
│ PASS [mem:   4969, cpu:   3008291] sqrt1
│ PASS [mem:   4969, cpu:   3008291] sqrt2
│ PASS [mem:  18324, cpu:  11212231] sqrt3
│ PASS [mem:  41466, cpu:  26320681] sqrt4
│ PASS [mem: 120810, cpu:  78121081] sqrt5
│ PASS [mem:   2603, cpu:   1975774] sqrt6
┕━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/math/rational ━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  60974, cpu:  31799441] new_1
│ PASS [mem:  55391, cpu:  21365404] numerator_1
│ PASS [mem:  56219, cpu:  21691132] denominator_1
│ PASS [mem:   2297, cpu:   1939798] zero_1
│ PASS [mem:  16693, cpu:   6542013] mul_1
│ PASS [mem:  16693, cpu:   6542013] mul_2
│ PASS [mem: 109845, cpu:  44052551] mul_3
│ PASS [mem:  30675, cpu:  12392282] div_1
│ PASS [mem:  30377, cpu:  12446273] div_2
│ PASS [mem:  17897, cpu:   7117386] add_1
│ PASS [mem:  17897, cpu:   7117386] add_2
│ PASS [mem:  17897, cpu:   7117386] sub_1
│ PASS [mem:  17897, cpu:   7117386] sub_2
│ PASS [mem:  17897, cpu:   7117386] sub_3
│ PASS [mem:  19072, cpu:   9605355] from_int_1
│ PASS [mem:  51415, cpu:  20748115] truncate_1
│ PASS [mem:  51415, cpu:  20748115] floor_1
│ PASS [mem:  79833, cpu:  35133583] ceil_1
│ PASS [mem:  30618, cpu:  13519973] proper_fraction_1
│ PASS [mem:  30618, cpu:  13519973] proper_fraction_2
│ PASS [mem:  30618, cpu:  13519973] proper_fraction_3
│ PASS [mem: 270868, cpu: 107239914] round_1
│ PASS [mem: 369294, cpu: 145477546] round_even_1
│ PASS [mem:  36856, cpu:  16249427] negate_1
│ PASS [mem:  35178, cpu:  15697444] abs_examples
│ PASS [mem:  78966, cpu:  35509723] reciprocal_1
│ PASS [mem:  61753, cpu:  28969660] reduce_1
│ PASS [mem:  69899, cpu:  30047819] compare_1
│ PASS [mem:  47910, cpu:  17700397] compare_with_eq
│ ↳ eq(x, y) ? False
│ ↳ eq(y, x) ? False
│ PASS [mem:  48480, cpu:  17787167] compare_with_neq
│ ↳ neq(x, x) ? False
│ PASS [mem:  46677, cpu:  17120891] compare_with_gte
│ ↳ gte(x, y) ? False
│ PASS [mem:  47910, cpu:  17701819] compare_with_gt
│ ↳ gt(x, y) ? False
│ ↳ gt(x, x) ? False
│ PASS [mem:  46677, cpu:  17120891] compare_with_lte
│ ↳ lte(y, x) ? False
│ PASS [mem:  47910, cpu:  17701819] compare_with_lt
│ ↳ lt(y, x) ? False
│ ↳ lt(x, x) ? False
│ PASS [mem:  78541, cpu:  30981852] arithmetic_mean_1
│ PASS [mem:  78541, cpu:  30981852] arithmetic_mean_2
│ PASS [mem: 136821, cpu:  52868860] arithmetic_mean_3
│ PASS [mem:  55520, cpu:  23728934] geometric_mean1
│ PASS [mem:  31299, cpu:  12480753] geometric_mean2
│ PASS [mem:  31299, cpu:  12480753] geometric_mean3
│ PASS [mem:  62132, cpu:  28045634] geometric_mean4
│ PASS [mem: 155695, cpu:  85774129] geometric_mean5
┕━━━━━━━━━━━━━━━━━━━━━ 42 tests | 42 passed | 0 failed

┍━ aiken/option ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   7263, cpu:   3446147] choice_1
│ PASS [mem:   4533, cpu:   2298165] choice_2
│ PASS [mem:  11425, cpu:   5028553] choice_3
│ PASS [mem:   3467, cpu:   1378556] or_else_1
│ PASS [mem:   4395, cpu:   1759887] or_else_2
│ PASS [mem:   2567, cpu:   2128362] or_try_1
│ PASS [mem:   2567, cpu:   2128362] or_try_2
│ PASS [mem:   4267, cpu:   2456432] map_1
│ PASS [mem:   6293, cpu:   3500706] map_2
│ PASS [mem:   5667, cpu:   2778432] map2_1
│ PASS [mem:   8961, cpu:   4099286] map2_2
│ PASS [mem:  13809, cpu:   6075688] map2_3
│ PASS [mem:   5967, cpu:   2847432] map3_1
│ PASS [mem:   9261, cpu:   4168286] map3_2
│ PASS [mem:  15383, cpu:   6923891] map3_3
│ PASS [mem:   4167, cpu:   2433432] and_then_1
│ PASS [mem:   8095, cpu:   4204669] and_then_2
│ PASS [mem:   6597, cpu:   3457628] and_then_3
│ PASS [mem:   4163, cpu:   2635238] flatten_1
│ PASS [mem:   4163, cpu:   2572308] flatten_2
│ PASS [mem:   3467, cpu:   2272432] flatten_3
│ PASS [mem:   9325, cpu:   4349735] flatten_4
│ PASS [mem:   3267, cpu:   1196277] is_some_1
│ PASS [mem:   3868, cpu:   1414833] is_some_2
│ PASS [mem:   3868, cpu:   1414833] is_none_1
│ PASS [mem:   3267, cpu:   1196277] is_none_2
┕━━━━━━━━━━━━━━ 26 tests | 26 passed | 0 failed

┍━ aiken/string ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1005, cpu:    209100] concat_1
│ PASS [mem:   2915, cpu:    951156] concat_2
│ PASS [mem:   1018, cpu:   1212375] concat_3
│ PASS [mem:    807, cpu:    673693] from_bytearray_1
│ PASS [mem:    807, cpu:    832687] from_bytearray_2
│ PASS [mem:    807, cpu:    832687] from_bytearray_3
│ PASS [mem:  12775, cpu:   3818216] from_int_1
│ PASS [mem:  16783, cpu:   6647871] from_int_2
│ PASS [mem:  20291, cpu:   9127703] from_int_3
│ PASS [mem:  23799, cpu:  11607535] from_int_4
│ PASS [mem:   5045, cpu:   1844709] join_1
│ PASS [mem:  20309, cpu:   8890514] join_2
│ PASS [mem:    805, cpu:    378935] to_bytearray_1
│ PASS [mem:    811, cpu:    464921] to_bytearray_2
│ PASS [mem:    811, cpu:    464921] to_bytearray_3
┕━━━━━━━━━━━━━━━━━━━━ 15 tests | 15 passed | 0 failed

┍━ aiken/transaction/value ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  17485, cpu:   6844757] without_lovelace_1
│ PASS [mem:  32733, cpu:  12074703] without_lovelace_2
│ PASS [mem:  54441, cpu:  21998289] without_lovelace_3
│ PASS [mem:  61094, cpu:  24823185] merge_1
│ PASS [mem: 222941, cpu:  90817858] merge_2
│ PASS [mem:  89976, cpu:  34409261] merge_3
│ PASS [mem:  62222, cpu:  25057185] merge_4
│ PASS [mem:  10667, cpu:   4055486] merge_5
│ PASS [mem:  52478, cpu:  21643944] add_1
│ PASS [mem:  89548, cpu:  37789736] add_2
│ PASS [mem: 104251, cpu:  43603859] add_3
│ PASS [mem:   6735, cpu:   2983132] add_4
│ PASS [mem:  10937, cpu:   4238621] add_5
│ PASS [mem:   5665, cpu:   2603632] flatten_with_1
│ PASS [mem: 126666, cpu:  49319281] flatten_with_2
│ PASS [mem:  10429, cpu:   4035340] from_minted_value_1
│ PASS [mem:  42887, cpu:  15331619] from_minted_value_2
│ PASS [mem: 175313, cpu:  69242974] from_minted_value_3
│ PASS [mem: 186263, cpu:  73592351] from_minted_value_4
│ PASS [mem: 610379, cpu: 243283896] from_minted_value_5
│ PASS [mem:  14523, cpu:   4749948] to_minted_value_1
│ PASS [mem:  46881, cpu:  18194672] to_minted_value_2
┕━━━━━━━━━━━━━━━━━━━━━━━ 22 tests | 22 passed | 0 failed```

NEW2

┍━ aiken/bytearray ━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1003, cpu:    426077] concat_1
│ PASS [mem:   1003, cpu:    426077] concat_2
│ PASS [mem:   1003, cpu:    426077] concat_3
│ PASS [mem:   1003, cpu:    426077] concat_4
│ PASS [mem:   1817, cpu:   1080730] drop_1
│ PASS [mem:   1817, cpu:   1080730] drop_2
│ PASS [mem:   1817, cpu:   1080730] drop_3
│ PASS [mem:   1817, cpu:   1080730] drop_4
│ PASS [mem:   3913, cpu:   1373522] foldl_1
│ PASS [mem:  11337, cpu:   4781534] foldl_2
│ PASS [mem: 122790, cpu:  56467868] foldl_3
│ PASS [mem:  20463, cpu:   9057009] foldl_4
│ PASS [mem:   4615, cpu:   1741473] foldr_1
│ PASS [mem:  11639, cpu:   5058433] foldr_2
│ PASS [mem:  20165, cpu:   9197330] foldr_3
│ PASS [mem:  49329, cpu:  24121953] index_of_1
│ PASS [mem:  58523, cpu:  29319758] index_of_2
│ PASS [mem:  71389, cpu:  35510083] index_of_3
│ PASS [mem:  36093, cpu:  17289075] index_of_4
│ PASS [mem:  18445, cpu:   8178633] index_of_5
│ PASS [mem:    811, cpu:    371033] length_1
│ PASS [mem:    811, cpu:    371033] length_2
│ PASS [mem:   2012, cpu:    727589] is_empty_1
│ PASS [mem:   2613, cpu:    946145] is_empty_2
│ PASS [mem:    805, cpu:    378935] from_string_1
│ PASS [mem:    811, cpu:    464921] from_string_2
│ PASS [mem:   1003, cpu:    646419] push_1
│ PASS [mem:   1003, cpu:    646419] push_2
│ PASS [mem:   1003, cpu:    646419] push_3
│ PASS [mem:   3913, cpu:   1381424] reduce_1
│ PASS [mem:  13843, cpu:   5986775] reduce_2
│ PASS [mem:   2009, cpu:   1332207] slice_1
│ PASS [mem:   2009, cpu:   1332207] slice_2
│ PASS [mem:   2009, cpu:   1332207] slice_3
│ PASS [mem:   2009, cpu:   1332207] slice_4
│ PASS [mem:   2009, cpu:   1332207] slice_5
│ PASS [mem:   1205, cpu:    735253] take_1
│ PASS [mem:   1205, cpu:    735253] take_2
│ PASS [mem:   1205, cpu:    735253] take_3
│ PASS [mem:   1205, cpu:    735253] take_4
│ PASS [mem:    807, cpu:    673693] to_string_1
│ PASS [mem:    807, cpu:    832687] to_string_2
│ PASS [mem: 105911, cpu:  61372963] to_hex_1
│ PASS [mem: 367397, cpu: 214726776] to_hex_2
│ PASS [mem:   6819, cpu:   3655961] test_bit_0
│ PASS [mem:   7420, cpu:   3874517] test_bit_1
│ PASS [mem:   7420, cpu:   3874517] test_bit_2
│ PASS [mem:   7420, cpu:   3874517] test_bit_3
│ PASS [mem:   6819, cpu:   3655961] test_bit_7
│ PASS [mem:   7420, cpu:   3874517] test_bit_8
│ PASS [mem:  29079, cpu:  15348212] test_bit_20_21_22_23
┕━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/cbor ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:    811, cpu:   3501009] serialise_1
│ PASS [mem:    811, cpu:   3501009] serialise_2
│ PASS [mem:    809, cpu:   3108339] serialise_3
│ PASS [mem:    829, cpu:   7035039] serialise_4
│ PASS [mem:    839, cpu:   8998389] serialise_5
│ PASS [mem:    829, cpu:   7035039] serialise_6
│ PASS [mem:    819, cpu:   5071689] serialise_7
│ PASS [mem:    809, cpu:   3108339] serialise_8
│ PASS [mem:  20291, cpu:   9127703] diagnostic_1
│ PASS [mem:  31833, cpu:  14501910] diagnostic_2
│ PASS [mem:  58765, cpu:  23385310] diagnostic_3
│ PASS [mem:  11205, cpu:   3377969] diagnostic_4
│ PASS [mem:  44097, cpu:  17090823] diagnostic_5
│ PASS [mem:  65396, cpu:  26304131] diagnostic_6
│ PASS [mem:  46705, cpu:  18808470] diagnostic_7
│ PASS [mem:  53867, cpu:  24792759] diagnostic_8
│ PASS [mem:  31727, cpu:  14771260] diagnostic_9
│ PASS [mem:  11205, cpu:   3384036] diagnostic_10
│ PASS [mem:  65306, cpu:  30437969] diagnostic_11
│ PASS [mem:  87451, cpu:  40462083] diagnostic_12
│ PASS [mem:  75169, cpu:  34007600] diagnostic_13
│ PASS [mem:  25423, cpu:   7980749] diagnostic_14
│ PASS [mem:  24099, cpu:  10842772] diagnostic_15
│ PASS [mem:  58566, cpu:  22271295] diagnostic_16
┕━━━━━━━━━━━━━━━━━ 24 tests | 24 passed | 0 failed

┍━ aiken/dict ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   5665, cpu:   2615997] delete_1
│ PASS [mem:  12655, cpu:   5097121] delete_2
│ PASS [mem:  15347, cpu:   6182171] delete_3
│ PASS [mem:  37391, cpu:  13378301] delete_4
│ PASS [mem:  28904, cpu:  10317267] delete_5
│ PASS [mem:   5665, cpu:   2615997] filter_1
│ PASS [mem:  20573, cpu:   8115435] filter_2
│ PASS [mem:  20673, cpu:   8153291] filter_3
│ PASS [mem:   5433, cpu:   2505165] find_1
│ PASS [mem:  13219, cpu:   5357951] find_2
│ PASS [mem:  13555, cpu:   5406741] find_3
│ PASS [mem:  51181, cpu:  21504522] find_4
│ PASS [mem:   4633, cpu:   1419387] foldr_1
│ PASS [mem:  12285, cpu:   4489799] foldr_2
│ PASS [mem:   4933, cpu:   1488387] fold_1
│ PASS [mem:  13185, cpu:   4696799] fold_2
│ PASS [mem:   5665, cpu:   2615997] from_list_1
│ PASS [mem:  54121, cpu:  21540389] from_list_2
│ PASS [mem:  30192, cpu:  12381695] from_list_3
│ PASS [mem:  50872, cpu:  21962562] from_list_4
│ PASS [mem: 841372, cpu: 378451255] bench_from_list
│ PASS [mem: 189385, cpu:  71691280] bench_from_ascending_list
│ PASS [mem:   5433, cpu:   2505165] get_1
│ PASS [mem:  30565, cpu:  12084419] get_2
│ PASS [mem:  30901, cpu:  12133209] get_3
│ PASS [mem:   4733, cpu:   1314010] has_key_1
│ PASS [mem:  11258, cpu:   3493290] has_key_2
│ PASS [mem:  12991, cpu:   4140200] has_key_3
│ PASS [mem:  23078, cpu:   8231147] has_key_4
│ PASS [mem:  25545, cpu:  10394690] insert_1
│ PASS [mem:  38161, cpu:  15736765] insert_2
│ PASS [mem:  19549, cpu:   8207578] insert_with_1
│ PASS [mem:  47997, cpu:  20875464] insert_with_2
│ PASS [mem:  64397, cpu:  27808165] insert_with_3
│ PASS [mem:   1532, cpu:    497454] is_empty_1
│ PASS [mem:   4765, cpu:   2396632] keys_1
│ PASS [mem:  25801, cpu:  10413135] keys_2
│ PASS [mem:  28285, cpu:  10553161] map_1
│ PASS [mem:  40119, cpu:  15967638] map_2
│ PASS [mem:    601, cpu:   1225811] to_list_1
│ PASS [mem:    601, cpu:   1477531] to_list_2
│ PASS [mem:   3233, cpu:   1097387] size_1
│ PASS [mem:  10395, cpu:   3447758] size_2
│ PASS [mem:  24581, cpu:   9137628] size_3
│ PASS [mem:  30492, cpu:  12450695] union_1
│ PASS [mem:   5965, cpu:   2936717] union_2
│ PASS [mem: 120205, cpu:  49093019] union_3
│ PASS [mem:  88541, cpu:  35418436] union_4
│ PASS [mem:  92169, cpu:  37126044] union_with_1
│ PASS [mem:   4765, cpu:   2396632] values_1
│ PASS [mem:  25801, cpu:  10424125] values_2
┕━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51 tests | 51 passed | 0 failed

┍━ aiken/int ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem: 138047, cpu:  61569844] from_utf8_1
│ PASS [mem:  67003, cpu:  28529185] from_utf8_2
│ PASS [mem: 138047, cpu:  61569844] from_utf8_3
│ PASS [mem:  83656, cpu:  35242758] from_utf8_4
│ PASS [mem:  35293, cpu:  14336866] from_utf8_5
│ PASS [mem:  63894, cpu:  26089213] from_utf8_6
┕━━━━━━━━━━━━━━━━━ 6 tests | 6 passed | 0 failed

┍━ aiken/interval ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  17151, cpu:   5659073] contains_1
│ PASS [mem:  28759, cpu:  10064894] contains_2
│ PASS [mem:  28759, cpu:  10060884] contains_3
│ PASS [mem:  29360, cpu:  10283450] contains_4
│ PASS [mem:  29529, cpu:  10497201] contains_5
│ PASS [mem:  29529, cpu:  10493191] contains_6
│ PASS [mem:  30130, cpu:  10715757] contains_7
│ PASS [mem:  39542, cpu:  14410431] contains_8
│ PASS [mem:  38941, cpu:  14191875] contains_9
│ PASS [mem:  38941, cpu:  14191875] contains_10
│ PASS [mem:  39542, cpu:  14418451] contains_11
│ PASS [mem:  17752, cpu:   5877629] contains_12
│ PASS [mem:  19234, cpu:   6770112] is_entirely_after_1
│ PASS [mem:  19835, cpu:   6988668] is_entirely_after_2
│ PASS [mem:  19835, cpu:   6988668] is_entirely_after_3
│ PASS [mem:  22496, cpu:   8018985] is_entirely_after_4
│ PASS [mem:  21895, cpu:   7800429] is_entirely_after_5
│ PASS [mem:  19234, cpu:   6766102] is_entirely_after_6
│ PASS [mem:  13616, cpu:   4472473] is_entirely_after_7
│ PASS [mem:  13616, cpu:   4472473] is_entirely_after_8
│ PASS [mem:  13616, cpu:   4472473] is_entirely_after_9
│ PASS [mem:  19698, cpu:   6944476] is_entirely_before_1
│ PASS [mem:  20299, cpu:   7163032] is_entirely_before_2
│ PASS [mem:  20299, cpu:   7163032] is_entirely_before_3
│ PASS [mem:  22359, cpu:   7974793] is_entirely_before_4
│ PASS [mem:  22960, cpu:   8193349] is_entirely_before_5
│ PASS [mem:  19698, cpu:   6940466] is_entirely_before_6
│ PASS [mem:  13548, cpu:   4490655] is_entirely_before_7
│ PASS [mem:  13548, cpu:   4490655] is_entirely_before_8
│ PASS [mem:  13548, cpu:   4490655] is_entirely_before_9
│ PASS [mem:  77227, cpu:  29265299] intersection_1
│ PASS [mem:  77227, cpu:  29265299] intersection_2
│ PASS [mem:  97044, cpu:  36136495] intersection_3
│ PASS [mem: 100336, cpu:  37008129] intersection_4
│ PASS [mem:  73980, cpu:  28803742] intersection_5
│ PASS [mem:  57393, cpu:  21940794] intersection_6
│ PASS [mem:  77227, cpu:  29265299] hull_1
│ PASS [mem:  70555, cpu:  27547495] hull_2
│ PASS [mem:  65521, cpu:  25346795] hull_3
┕━━━━━━━━━━━━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/list ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  16223, cpu:   5646325] all_1
│ PASS [mem:   7532, cpu:   2433317] all_2
│ PASS [mem:   4433, cpu:   1245010] all_3
│ PASS [mem:   6931, cpu:   2214761] any_1
│ PASS [mem:  16824, cpu:   5864881] any_2
│ PASS [mem:   5034, cpu:   1463566] any_3
│ PASS [mem:   4333, cpu:   1350387] count_empty
│ PASS [mem:  17329, cpu:   6647133] count_all
│ PASS [mem:  16927, cpu:   6336626] count_some
│ PASS [mem:  16123, cpu:   5751702] count_none
│ PASS [mem:  18629, cpu:   7846489] at_1
│ PASS [mem:   4733, cpu:   2344165] at_2
│ PASS [mem:  18629, cpu:   7846489] at_3
│ PASS [mem:   8327, cpu:   3762006] at_4
│ PASS [mem:  17591, cpu:   7430222] at_5
│ PASS [mem:  11249, cpu:   5153046] concat_1
│ PASS [mem:  11249, cpu:   4964256] concat_2
│ PASS [mem:   4265, cpu:   2470422] concat_3
│ PASS [mem:   4665, cpu:   2373632] delete_1
│ PASS [mem:   7163, cpu:   3531699] delete_2
│ PASS [mem:  18447, cpu:   7575794] delete_3
│ PASS [mem:   7163, cpu:   3342909] delete_4
│ PASS [mem:  44215, cpu:  16497251] difference_1
│ PASS [mem:  41717, cpu:  15656960] difference_2
│ PASS [mem:   4965, cpu:   2631422] difference_3
│ PASS [mem:  18345, cpu:   6845120] difference_4
│ PASS [mem:   5367, cpu:   2820585] drop_1
│ PASS [mem:  11671, cpu:   5552093] drop_2
│ PASS [mem:   4265, cpu:   2281632] drop_while_1
│ PASS [mem:  26413, cpu:  10901558] drop_while_2
│ PASS [mem:   6763, cpu:   3880209] drop_while_3
│ PASS [mem:  43565, cpu:  16952682] drop_while_4
│ PASS [mem:   4665, cpu:   2373632] filter_1
│ PASS [mem:  32643, cpu:  15248447] filter_2
│ PASS [mem:  40977, cpu:  17849167] filter_3
│ PASS [mem:   5665, cpu:   2603632] filter_map_1
│ PASS [mem:  56731, cpu:  24711727] filter_map_2
│ PASS [mem:   8027, cpu:   3693006] find_1
│ PASS [mem:  16223, cpu:   6676480] find_2
│ PASS [mem:   4433, cpu:   2275165] find_3
│ PASS [mem:   4265, cpu:   2281632] flat_map_1
│ PASS [mem:  36497, cpu:  13483326] flat_map_2
│ PASS [mem:   3933, cpu:   1258387] foldl_1
│ PASS [mem:  18083, cpu:   6911482] foldl_2
│ PASS [mem:  16933, cpu:   6748892] foldl_3
│ PASS [mem:  16283, cpu:   6497482] foldr_1
│ PASS [mem:  17026, cpu:   7325562] foldr_2
│ PASS [mem:  15433, cpu:   6403892] foldr_3
│ PASS [mem:   4433, cpu:   2275165] init_1
│ PASS [mem:   8025, cpu:   3706500] init_2
│ PASS [mem:  19101, cpu:   7935732] init_3
│ PASS [mem:   6931, cpu:   2214287] has_1
│ PASS [mem:  16824, cpu:   5863459] has_2
│ PASS [mem:   5034, cpu:   1463566] has_3
│ PASS [mem:  17591, cpu:   7430222] index_of_1
│ PASS [mem:  18629, cpu:   7846489] index_of_2
│ PASS [mem:  22223, cpu:   9264330] index_of_3
│ PASS [mem:   4733, cpu:   2344165] index_of_4
│ PASS [mem:   3829, cpu:   2374978] head_1
│ PASS [mem:   2733, cpu:   1884165] head_2
│ PASS [mem:   3933, cpu:   1258387] indexed_foldr_1
│ PASS [mem:  17039, cpu:   7356035] indexed_foldr_2
│ PASS [mem:   4565, cpu:   2350632] indexed_map_1
│ PASS [mem:  24949, cpu:  10572756] indexed_map_2
│ PASS [mem:   2733, cpu:    854010] is_empty_1
│ PASS [mem:   3334, cpu:   1072566] is_empty_2
│ PASS [mem:   4033, cpu:   2183165] last_1
│ PASS [mem:   6493, cpu:   3189514] last_2
│ PASS [mem:  15577, cpu:   6489730] last_3
│ PASS [mem:   3233, cpu:   1097387] length_1
│ PASS [mem:   9431, cpu:   3746426] length_2
│ PASS [mem:   4265, cpu:   2281632] map_1
│ PASS [mem:  17041, cpu:   7597800] map_2
│ PASS [mem:   4565, cpu:   2350632] map2_1
│ PASS [mem:  17937, cpu:   7436142] map2_2
│ PASS [mem:  10649, cpu:   4602317] map2_3
│ PASS [mem:   4865, cpu:   2419632] map3_1
│ PASS [mem:  23897, cpu:   9766380] map3_2
│ PASS [mem:   1365, cpu:   1567701] push_1
│ PASS [mem:   1365, cpu:   1693561] push_2
│ PASS [mem:  15207, cpu:   7360693] range_1
│ PASS [mem:  12339, cpu:   6090830] range_2
│ PASS [mem:   3735, cpu:   2277231] repeat_1
│ PASS [mem:  11643, cpu:   5933790] repeat_2
│ PASS [mem:   4565, cpu:   2350632] reverse_1
│ PASS [mem:  13841, cpu:   5649327] reverse_2
│ PASS [mem:   6761, cpu:   3142503] partition_1
│ PASS [mem:  79941, cpu:  30360843] partition_2
│ PASS [mem:  80373, cpu:  30524614] partition_3
│ PASS [mem:  80373, cpu:  30529354] partition_4
│ PASS [mem:  37637, cpu:  16209783] partition_5
│ PASS [mem:  28469, cpu:  12042193] slice_1
│ PASS [mem:  35205, cpu:  14978125] slice_2
│ PASS [mem:  55363, cpu:  23868293] slice_3
│ PASS [mem:  54397, cpu:  23607965] slice_4
│ PASS [mem:  49127, cpu:  21047361] slice_5
│ PASS [mem:  44203, cpu:  18831686] slice_6
│ PASS [mem: 284747, cpu: 144221960] sort_1
│ PASS [mem:  89205, cpu:  41655984] sort_2
│ PASS [mem: 370815, cpu: 186440082] sort_3
│ PASS [mem:   4665, cpu:   2373632] sort_4
│ PASS [mem:   7061, cpu:   3211503] span_1
│ PASS [mem:  24135, cpu:  10048326] span_2
│ PASS [mem:  10223, cpu:   4633012] span_3
│ PASS [mem:  27929, cpu:  11523264] span_4
│ PASS [mem:   4061, cpu:   2584652] tail_1
│ PASS [mem:   2733, cpu:   1884165] tail_2
│ PASS [mem:   6167, cpu:   3004585] take_1
│ PASS [mem:  13799, cpu:   6292507] take_2
│ PASS [mem:   4665, cpu:   2373632] take_while_1
│ PASS [mem:  30133, cpu:  12016023] take_while_2
│ PASS [mem:   7163, cpu:   3342909] take_while_3
│ PASS [mem:  50605, cpu:  19718912] take_while_4
│ PASS [mem:   4665, cpu:   2373632] unique_1
│ PASS [mem: 418774, cpu: 152049665] unique_2
│ PASS [mem:   6361, cpu:   3050503] unzip_1
│ PASS [mem:  21313, cpu:   8568265] unzip_2
│ PASS [mem:   4565, cpu:   2362997] zip_1
│ PASS [mem:   6693, cpu:   3126139] zip_2
│ PASS [mem:  15405, cpu:   6372579] zip_3
│ PASS [mem:   3933, cpu:   1258387] reduce_1
│ PASS [mem:  12423, cpu:   4650244] reduce_2
│ PASS [mem:  17719, cpu:   6176228] reduce_3
│ PASS [mem:  12423, cpu:   4008730] reduce_4
┕━━━━━━━━━━━━━━━━━ 124 tests | 124 passed | 0 failed

┍━ aiken/math ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   2203, cpu:    981996] abs_1
│ PASS [mem:   2605, cpu:   1280473] abs_2
│ PASS [mem:   3405, cpu:   1547959] clamp_1
│ PASS [mem:   3405, cpu:   1547959] clamp_2
│ PASS [mem:   2203, cpu:    981996] clamp_3
│ PASS [mem:   2203, cpu:    981996] max_1
│ PASS [mem:   2203, cpu:    981996] max_2
│ PASS [mem:   2203, cpu:    981996] max_3
│ PASS [mem:   2203, cpu:    981996] min_1
│ PASS [mem:   2203, cpu:    981996] min_2
│ PASS [mem:   2203, cpu:    981996] min_3
│ PASS [mem:  25343, cpu:  12789502] pow_3_5
│ PASS [mem:  18329, cpu:   9011372] pow_7_2
│ PASS [mem:   3703, cpu:   1326996] pow_3__4
│ PASS [mem:   4905, cpu:   1892485] pow_0_0
│ PASS [mem:  18933, cpu:   9448745] pow_513_3
│ PASS [mem:  24739, cpu:  12352129] pow_2_4
│ PASS [mem:  45177, cpu:  23249146] pow_2_42
│ PASS [mem:   4405, cpu:   1777959] pow2_neg
│ PASS [mem:   4809, cpu:   1927626] pow2_0
│ PASS [mem:   4809, cpu:   1927626] pow2_1
│ PASS [mem:   4809, cpu:   1927626] pow2_4
│ PASS [mem:  12625, cpu:   5480224] pow2_42
│ PASS [mem:  36085, cpu:  16279946] pow2_256
│ PASS [mem:  14323, cpu:   7101159] log_10_2
│ PASS [mem:  24341, cpu:  12451843] log_42_2
│ PASS [mem:  20034, cpu:  10227464] log_42_3
│ PASS [mem:   3403, cpu:   1253986] log_5_0
│ PASS [mem:   4305, cpu:   1750475] log_4_4
│ PASS [mem:   5507, cpu:   2316438] log_4_43
│ PASS [mem:  10211, cpu:   4597383] gcd_test1
│ PASS [mem:  12714, cpu:   5915332] gcd_test2
│ PASS [mem:   7708, cpu:   3279434] gcd_test3
│ PASS [mem:   4969, cpu:   3008291] sqrt1
│ PASS [mem:   4969, cpu:   3008291] sqrt2
│ PASS [mem:  18624, cpu:  11281231] sqrt3
│ PASS [mem:  41766, cpu:  26389681] sqrt4
│ PASS [mem: 121110, cpu:  78190081] sqrt5
│ PASS [mem:   2603, cpu:   1975774] sqrt6
┕━━━━━━━━━━━━━ 39 tests | 39 passed | 0 failed

┍━ aiken/math/rational ━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  60974, cpu:  31799441] new_1
│ PASS [mem:  56591, cpu:  21641404] numerator_1
│ PASS [mem:  57419, cpu:  21967132] denominator_1
│ PASS [mem:   2297, cpu:   1939798] zero_1
│ PASS [mem:  18193, cpu:   6887013] mul_1
│ PASS [mem:  18193, cpu:   6887013] mul_2
│ PASS [mem: 119145, cpu:  46191551] mul_3
│ PASS [mem:  33075, cpu:  12944282] div_1
│ PASS [mem:  32777, cpu:  12998273] div_2
│ PASS [mem:  19997, cpu:   7600386] add_1
│ PASS [mem:  19997, cpu:   7600386] add_2
│ PASS [mem:  19997, cpu:   7600386] sub_1
│ PASS [mem:  19997, cpu:   7600386] sub_2
│ PASS [mem:  19997, cpu:   7600386] sub_3
│ PASS [mem:  19072, cpu:   9605355] from_int_1
│ PASS [mem:  51415, cpu:  20748115] truncate_1
│ PASS [mem:  51415, cpu:  20748115] floor_1
│ PASS [mem:  84633, cpu:  36237583] ceil_1
│ PASS [mem:  33018, cpu:  14071973] proper_fraction_1
│ PASS [mem:  33018, cpu:  14071973] proper_fraction_2
│ PASS [mem:  33018, cpu:  14071973] proper_fraction_3
│ PASS [mem: 296068, cpu: 113035914] round_1
│ PASS [mem: 408894, cpu: 154585546] round_even_1
│ PASS [mem:  36856, cpu:  16249427] negate_1
│ PASS [mem:  35178, cpu:  15697444] abs_examples
│ PASS [mem:  80466, cpu:  35854723] reciprocal_1
│ PASS [mem:  62653, cpu:  29176660] reduce_1
│ PASS [mem:  77999, cpu:  31910819] compare_1
│ PASS [mem:  51210, cpu:  18459397] compare_with_eq
│ ↳ eq(x, y) ? False
│ ↳ eq(y, x) ? False
│ PASS [mem:  51780, cpu:  18546167] compare_with_neq
│ ↳ neq(x, x) ? False
│ PASS [mem:  49977, cpu:  17879891] compare_with_gte
│ ↳ gte(x, y) ? False
│ PASS [mem:  51210, cpu:  18460819] compare_with_gt
│ ↳ gt(x, y) ? False
│ ↳ gt(x, x) ? False
│ PASS [mem:  49977, cpu:  17879891] compare_with_lte
│ ↳ lte(y, x) ? False
│ PASS [mem:  51210, cpu:  18460819] compare_with_lt
│ ↳ lt(y, x) ? False
│ ↳ lt(x, x) ? False
│ PASS [mem:  86641, cpu:  32844852] arithmetic_mean_1
│ PASS [mem:  86641, cpu:  32844852] arithmetic_mean_2
│ PASS [mem: 152721, cpu:  56525860] arithmetic_mean_3
│ PASS [mem:  58820, cpu:  24487934] geometric_mean1
│ PASS [mem:  33699, cpu:  13032753] geometric_mean2
│ PASS [mem:  33699, cpu:  13032753] geometric_mean3
│ PASS [mem:  65432, cpu:  28804634] geometric_mean4
│ PASS [mem: 160195, cpu:  86809129] geometric_mean5
┕━━━━━━━━━━━━━━━━━━━━━ 42 tests | 42 passed | 0 failed

┍━ aiken/option ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   7563, cpu:   3515147] choice_1
│ PASS [mem:   4533, cpu:   2298165] choice_2
│ PASS [mem:  12025, cpu:   5166553] choice_3
│ PASS [mem:   4367, cpu:   1585556] or_else_1
│ PASS [mem:   5295, cpu:   1966887] or_else_2
│ PASS [mem:   3467, cpu:   2335362] or_try_1
│ PASS [mem:   3467, cpu:   2335362] or_try_2
│ PASS [mem:   5167, cpu:   2663432] map_1
│ PASS [mem:   7193, cpu:   3707706] map_2
│ PASS [mem:   5967, cpu:   2847432] map2_1
│ PASS [mem:   9861, cpu:   4306286] map2_2
│ PASS [mem:  15309, cpu:   6420688] map2_3
│ PASS [mem:   5967, cpu:   2847432] map3_1
│ PASS [mem:   9861, cpu:   4306286] map3_2
│ PASS [mem:  16883, cpu:   7268891] map3_3
│ PASS [mem:   4767, cpu:   2571432] and_then_1
│ PASS [mem:   8695, cpu:   4342669] and_then_2
│ PASS [mem:   7197, cpu:   3595628] and_then_3
│ PASS [mem:   5063, cpu:   2842238] flatten_1
│ PASS [mem:   5063, cpu:   2779308] flatten_2
│ PASS [mem:   4367, cpu:   2479432] flatten_3
│ PASS [mem:   9925, cpu:   4487735] flatten_4
│ PASS [mem:   3867, cpu:   1334277] is_some_1
│ PASS [mem:   4468, cpu:   1552833] is_some_2
│ PASS [mem:   4468, cpu:   1552833] is_none_1
│ PASS [mem:   3867, cpu:   1334277] is_none_2
┕━━━━━━━━━━━━━━ 26 tests | 26 passed | 0 failed

┍━ aiken/string ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:   1005, cpu:    209100] concat_1
│ PASS [mem:   2915, cpu:    951156] concat_2
│ PASS [mem:   1018, cpu:   1212375] concat_3
│ PASS [mem:    807, cpu:    673693] from_bytearray_1
│ PASS [mem:    807, cpu:    832687] from_bytearray_2
│ PASS [mem:    807, cpu:    832687] from_bytearray_3
│ PASS [mem:  12775, cpu:   3818216] from_int_1
│ PASS [mem:  16783, cpu:   6647871] from_int_2
│ PASS [mem:  20291, cpu:   9127703] from_int_3
│ PASS [mem:  23799, cpu:  11607535] from_int_4
│ PASS [mem:   5045, cpu:   1844709] join_1
│ PASS [mem:  21209, cpu:   9097514] join_2
│ PASS [mem:    805, cpu:    378935] to_bytearray_1
│ PASS [mem:    811, cpu:    464921] to_bytearray_2
│ PASS [mem:    811, cpu:    464921] to_bytearray_3
┕━━━━━━━━━━━━━━━━━━━━ 15 tests | 15 passed | 0 failed

┍━ aiken/transaction/value ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ PASS [mem:  17785, cpu:   6913757] without_lovelace_1
│ PASS [mem:  33333, cpu:  12212703] without_lovelace_2
│ PASS [mem:  54741, cpu:  22067289] without_lovelace_3
│ PASS [mem:  62294, cpu:  25099185] merge_1
│ PASS [mem: 224441, cpu:  91162858] merge_2
│ PASS [mem:  91776, cpu:  34823261] merge_3
│ PASS [mem:  63422, cpu:  25333185] merge_4
│ PASS [mem:  10967, cpu:   4124486] merge_5
│ PASS [mem:  53078, cpu:  21781944] add_1
│ PASS [mem:  90448, cpu:  37996736] add_2
│ PASS [mem: 105751, cpu:  43948859] add_3
│ PASS [mem:   6735, cpu:   2983132] add_4
│ PASS [mem:  10937, cpu:   4238621] add_5
│ PASS [mem:   5665, cpu:   2603632] flatten_with_1
│ PASS [mem: 128766, cpu:  49802281] flatten_with_2
│ PASS [mem:  11029, cpu:   4173340] from_minted_value_1
│ PASS [mem:  43787, cpu:  15538619] from_minted_value_2
│ PASS [mem: 178013, cpu:  69863974] from_minted_value_3
│ PASS [mem: 189263, cpu:  74282351] from_minted_value_4
│ PASS [mem: 618779, cpu: 245215896] from_minted_value_5
│ PASS [mem:  14823, cpu:   4818948] to_minted_value_1
│ PASS [mem:  48381, cpu:  18539672] to_minted_value_2
┕━━━━━━━━━━━━━━━━━━━━━━━ 22 tests | 22 passed | 0 failed

In this case NEW2 represents the same branch but using the current inliner from main.

@MicroProofs
Copy link
Member Author

Main branch Butane script sizes
SCRIPT SIZES: [
84, 2235, 110, 110, 182, 332, 397, 14725, 2791, 10983, 888, 132, 18, 641
]
This branch sizes

SCRIPT SIZES: [
84, 1980, 102, 103, 177, 319, 376, 13197, 2623, 9881, 801, 127, 18, 596
]

@MicroProofs
Copy link
Member Author

Looks good just need to update snapshot tests now

@MicroProofs
Copy link
Member Author

MicroProofs commented Mar 3, 2024

So far looks good to merge. I might tweak it to curry on builtins wtih an occurence of 3 or more to prevent the overhead, but those changes would be in another much smaller pr. Overall I'm happy with where this optimization ended up and likely this will be the last new uplc optimization for a long time.

@KtorZ KtorZ mentioned this pull request Mar 3, 2024
52 tasks
@MicroProofs MicroProofs force-pushed the binop-optimizations branch from bd45805 to 86c5bb8 Compare March 4, 2024 15:40
@MicroProofs MicroProofs merged commit e14f091 into main Mar 4, 2024
2 checks passed
@MicroProofs MicroProofs deleted the binop-optimizations branch March 4, 2024 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🚀 Released
Development

Successfully merging this pull request may close these issues.

2 participants