{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":34844615,"defaultBranch":"develop-3.4","name":"leveled","ownerLogin":"martinsumner","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-04-30T08:56:15.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1628897?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1726682047.0","currentOid":""},"activityList":{"items":[{"before":"506ba40a34707c5f1a1fdd10e28b46734d0038ea","after":null,"ref":"refs/heads/mas-d31-maskit.i116-level1compat","pushedAt":"2024-09-18T17:54:07.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"}},{"before":"da092d01bc7229f3f2d5e2bf9e94fb47e11a258f","after":"051aa12acedb0e55c8ccc7f4063aa3962d3a880b","ref":"refs/heads/develop-3.1","pushedAt":"2024-09-18T17:54:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Make tree compatible with binary L1 (#452)\n\nThe old leveled_tictac had a pure binary L1. this was slower than the new map version.\r\n\r\nHowever, in a Riak cluster, when running a merge_tree_range during a rolling update, the fold the query coordinator will initiate a tree. If this tree is not a map-based tree (as that node has not yet been upgraded), then a node that has been upgraded would previously fail the query as it cannot handle a level 1 in a binary form. This now enables updated nodes to handle both forms of trees.\r\n\r\nObviously, if the coordinating node has been updated non-updated nodes will crash queries as they cannot handle the tree with the map at Level 1. The aim is to make it configurable to force non-map trees in a cluster, until all nodes have been upgraded. So as long as each node understands how to update both non-map trees and map-based trees - evrything should be OK.","shortMessageHtmlLink":"Make tree compatible with binary L1 (#452)"}},{"before":"5ac1d7f66b1c616f68a393c97354ca45817e16a9","after":null,"ref":"refs/heads/mas-d34-maskit.i116-level1compat","pushedAt":"2024-09-18T09:24:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"}},{"before":"0cc998a7e31e59a07b827b84f4fb632602f14561","after":"1be55fcd15b3477f3ab1433850e56b1baf9798cb","ref":"refs/heads/develop-3.4","pushedAt":"2024-09-18T09:24:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Make tree compatible with binary L1 (#451)\n\nThe old leveled_tictac had a pure binary L1. this was slower than the new map version.\r\n\r\nHowever, in a Riak cluster, when running a merge_tree_range during a rolling update, the fold the query coordinator will initiate a tree. If this tree is not a map-based tree (as that node has not yet been upgraded), then a node that has been upgraded would previously fail the query as it cannot handle a level 1 in a binary form. This now enables updated nodes to handle both forms of trees.\r\n\r\nObviously, if the coordinating node has been updated non-updated nodes will crash queries as they cannot handle the tree with the map at Level 1. The aim is to make it configurable to force non-map trees in a cluster, until all nodes have been upgraded. So as long as each node understands how to update both non-map trees and map-based trees - evrything should be OK.","shortMessageHtmlLink":"Make tree compatible with binary L1 (#451)"}},{"before":null,"after":"506ba40a34707c5f1a1fdd10e28b46734d0038ea","ref":"refs/heads/mas-d31-maskit.i116-level1compat","pushedAt":"2024-09-17T13:14:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Make tree compatible with binary L1\n\nThe old leveled_tictac had a pure binary L1. this was slower than the new map version.\n\nHowever, in a Riak cluster, when running a merge_tree_range during a rolling update, the fold the query coordinator will initiate a tree. If this tree is not a map-based tree (as that node has not yet been upgraded), then a node that has been upgraded would previously fail the query as it cannot handle a level 1 in a binary form. This now enables updated nodes to handle both forms of trees.\n\nObviously, if the coordinating node has been updated non-updated nodes will crash queries as they cannot handle the tree with the map at Level 1. The aim is to make it configurable to force non-map trees in a cluster, until all nodes have been upgraded. So as long as each node understands how to update both non-map trees and map-based trees - evrything should be OK.","shortMessageHtmlLink":"Make tree compatible with binary L1"}},{"before":null,"after":"5ac1d7f66b1c616f68a393c97354ca45817e16a9","ref":"refs/heads/mas-d34-maskit.i116-level1compat","pushedAt":"2024-09-17T11:33:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Make tree compatible with binary L1\n\nThe old leveled_tictac had a pure binary L1. this was slower than the new map version.\n\nHowever, in a Riak cluster, when running a merge_tree_range during a rolling update, the fold the query coordinator will initiate a tree. If this tree is not a map-based tree (as that node has not yet been upgraded), then a node that has been upgraded would previously fail the query as it cannot handle a level 1 in a binary form. This now enables updated nodes to handle both forms of trees.\n\nObviously, if the coordinating node has been updated non-updated nodes will crash queries as they cannot handle the tree with the map at Level 1. The aim is to make it configurable to force non-map trees in a cluster, until all nodes have been upgraded. So as long as each node understands how to update both non-map trees and map-based trees - evrything should be OK.","shortMessageHtmlLink":"Make tree compatible with binary L1"}},{"before":"54e309602056520ac3fa672f6af836be7b5583fb","after":"0cc998a7e31e59a07b827b84f4fb632602f14561","ref":"refs/heads/develop-3.4","pushedAt":"2024-09-06T10:41:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update README.md","shortMessageHtmlLink":"Update README.md"}},{"before":"f35dbe99e17fdfe6b8286916359d2d72c8797f73","after":null,"ref":"refs/heads/mas-d32-leveled.i388-logger","pushedAt":"2024-09-06T10:18:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"}},{"before":"5db277b82d2989b6096afb29ae9ae8d3398747d1","after":"54e309602056520ac3fa672f6af836be7b5583fb","ref":"refs/heads/develop-3.4","pushedAt":"2024-09-06T10:18:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Switch to logger (#442)\n\n* Switch to logger\r\n\r\nUse logger rather than io:format when logging. The ct tests have besn switched to log to file, testutil/init_per_suite/1 may offer useful guidance on configuring logger with leveled.\r\n\r\nAs all logs are produced by the leveled_log module, the MFA metadata is uninteresting for log outputs, but can be used for explicit filter controls for leveled logs.\r\n\r\n* iolist_to_binary not unicode_binary()\r\n\r\nlogger filters will be error and be removed if the format line is a binary(). Must be either a charlist() or a unicode_binary() - so iolist_to_binary() can't be used\r\n\r\n* Add metadata for filter\r\n\r\n* Update test/end_to_end/tictac_SUITE.erl\r\n\r\nCo-authored-by: Thomas Arts \r\n\r\n---------\r\n\r\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Switch to logger (#442)"}},{"before":"ae4801671064e538d3c870c339079741dfa037fd","after":"f35dbe99e17fdfe6b8286916359d2d72c8797f73","ref":"refs/heads/mas-d32-leveled.i388-logger","pushedAt":"2024-09-06T10:10:03.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Merge branch 'develop-3.4' into mas-d32-leveled.i388-logger","shortMessageHtmlLink":"Merge branch 'develop-3.4' into mas-d32-leveled.i388-logger"}},{"before":"b55130f473c100ca90365e72683156969dcf1228","after":null,"ref":"refs/heads/mas-d34-ms.i446-plusplus","pushedAt":"2024-09-05T14:08:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"}},{"before":"30ec9214ace40dc918f4a4121ac7e2ba899a11a2","after":"5db277b82d2989b6096afb29ae9ae8d3398747d1","ref":"refs/heads/develop-3.4","pushedAt":"2024-09-05T14:08:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Mas d34 ms.i446 plusplus (#448)\n\n* Minor optimisations\r\n\r\nTry to reduce the calls to ++, and ensure that where possible the shorted list is being copied.\r\n\r\n* Pass Acc into function\r\n\r\nSo that the list can be accumulated efficiently, without an additional copy to add back the accumulator at the end.\r\n\r\n* prepend to accumulators\r\n\r\nCode review to make sure we prepend to accumulators everywhere, to reduce the copying involved.\r\n\r\nattempt to further optimise in leveled_sst (where most expensive ++ occurs). This optimises for the case when Acc is [], and enforces a series of '++' to start from the right, prepending in turn. Some shell testing indicated that this was not necessarily the case (although this doesn't seem tobe consistently reproducible).\r\n\r\n```\r\n6> element(1, timer:tc(fun() -> KL1 ++ KL2 ++ KL3 ++ KL4 end)).\r\n28\r\n7> element(1, timer:tc(fun() -> KL1 ++ KL2 ++ KL3 ++ KL4 end)).\r\n174\r\n8> element(1, timer:tc(fun() -> KL1 ++ KL2 ++ KL3 ++ KL4 end)).\r\n96\r\n9> element(1, timer:tc(fun() -> KL1 ++ KL2 ++ KL3 ++ KL4 end)).\r\n106\r\n10> element(1, timer:tc(fun() -> KL1 ++ KL2 ++ KL3 ++ KL4 end)).\r\n112\r\n\r\n17> element(1, timer:tc(fun() -> lists:foldr(fun(KL0, KLAcc) -> KL0 ++ KLAcc end, [], [KL1, KL2, KL3, KL4]) end)).\r\n21\r\n18> element(1, timer:tc(fun() -> lists:foldr(fun(KL0, KLAcc) -> KL0 ++ KLAcc end, [], [KL1, KL2, KL3, KL4]) end)).\r\n17\r\n19> element(1, timer:tc(fun() -> lists:foldr(fun(KL0, KLAcc) -> KL0 ++ KLAcc end, [], [KL1, KL2, KL3, KL4]) end)).\r\n12\r\n20> element(1, timer:tc(fun() -> lists:foldr(fun(KL0, KLAcc) -> KL0 ++ KLAcc end, [], [KL1, KL2, KL3, KL4]) end)).\r\n11\r\n```\r\n\r\nrunning eprof indicates that '++' and lists:reverse have been reduced (however impact had only previously been 1-2%)\r\n\r\n* Add unit test to confirm (limited) merit of optimised list function\r\n\r\nNo difference in unit test with/without inline compilation, so this has been removed\r\n\r\n* Update src/leveled_sst.erl\r\n\r\nThese functions had previously used inline compilation - but this didn't appear to improve performance\r\n\r\nCo-authored-by: Thomas Arts \r\n\r\n* Update src/leveled_sst.erl\r\n\r\nCo-authored-by: Thomas Arts \r\n\r\n* Update src/leveled_ebloom.erl\r\n\r\nCo-authored-by: Thomas Arts \r\n\r\n* Update following review\r\n\r\nAlso fix code coverage issues\r\n\r\n* Update src/leveled_sst.erl\r\n\r\nCo-authored-by: Thomas Arts \r\n\r\n---------\r\n\r\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Mas d34 ms.i446 plusplus (#448)"}},{"before":"80423f019e677bfb8ae4847f6302aac38a852f35","after":"b55130f473c100ca90365e72683156969dcf1228","ref":"refs/heads/mas-d34-ms.i446-plusplus","pushedAt":"2024-09-05T11:43:18.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Merge branch 'mas-d34-ms.i446-plusplus' of https://github.com/martinsumner/leveled into mas-d34-ms.i446-plusplus","shortMessageHtmlLink":"Merge branch 'mas-d34-ms.i446-plusplus' of https://github.com/martins…"}},{"before":"e8acca34298a015c50cd4985a41e6c3a3bb8a4d0","after":"80423f019e677bfb8ae4847f6302aac38a852f35","ref":"refs/heads/mas-d34-ms.i446-plusplus","pushedAt":"2024-09-05T10:42:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update src/leveled_sst.erl\n\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Update src/leveled_sst.erl"}},{"before":"a2fd1c345dfb44a82c4459a068a412604cf7c567","after":"e8acca34298a015c50cd4985a41e6c3a3bb8a4d0","ref":"refs/heads/mas-d34-ms.i446-plusplus","pushedAt":"2024-09-05T10:41:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update following review\n\nAlso fix code coverage issues","shortMessageHtmlLink":"Update following review"}},{"before":"35c074b1b2b6af1ec5d83ca9511310649cf10668","after":"a2fd1c345dfb44a82c4459a068a412604cf7c567","ref":"refs/heads/mas-d34-ms.i446-plusplus","pushedAt":"2024-09-04T16:38:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update src/leveled_ebloom.erl\n\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Update src/leveled_ebloom.erl"}},{"before":"7d66bd0a9b80963096dfe85c30a4d076b548de61","after":"35c074b1b2b6af1ec5d83ca9511310649cf10668","ref":"refs/heads/mas-d34-ms.i446-plusplus","pushedAt":"2024-09-04T16:38:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update src/leveled_sst.erl\n\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Update src/leveled_sst.erl"}},{"before":"5ec44ce549ec69bb7a8f1b20fb606f14badd1a67","after":"7d66bd0a9b80963096dfe85c30a4d076b548de61","ref":"refs/heads/mas-d34-ms.i446-plusplus","pushedAt":"2024-09-04T16:38:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update src/leveled_sst.erl\r\n\r\nThese functions had previously used inline compilation - but this didn't appear to improve performance\n\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Update src/leveled_sst.erl"}},{"before":"44e14b184f4d2ac11b007bd2ef3c570025b45c41","after":"ae4801671064e538d3c870c339079741dfa037fd","ref":"refs/heads/mas-d32-leveled.i388-logger","pushedAt":"2024-09-04T15:40:55.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Merge branch 'develop-3.4' into mas-d32-leveled.i388-logger","shortMessageHtmlLink":"Merge branch 'develop-3.4' into mas-d32-leveled.i388-logger"}},{"before":"4126570c61fc679683718cd8e947e9fa79f8900d","after":null,"ref":"refs/heads/mas-i449-directpromptofdeletions","pushedAt":"2024-09-04T08:04:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"}},{"before":"af0f2bb2cf41fed7d8c8c74de5c4bc867b68c552","after":"30ec9214ace40dc918f4a4121ac7e2ba899a11a2","ref":"refs/heads/develop-3.4","pushedAt":"2024-09-04T08:04:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Mas i449 directpromptofdeletions (#450)\n\n* Move prompt of deletions to Inker\r\n\r\nIt is a series of casts, so no reason to offload this to the clerk. Simplifies potential races in shutdown\r\n\r\n* Rename\r\n\r\n* Change cache sizes\r\n\r\nIn the hope of making test more consistent","shortMessageHtmlLink":"Mas i449 directpromptofdeletions (#450)"}},{"before":"54b08167616ad428e30a7e5435b09e1e07c814aa","after":"44e14b184f4d2ac11b007bd2ef3c570025b45c41","ref":"refs/heads/mas-d32-leveled.i388-logger","pushedAt":"2024-09-03T15:58:53.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Merge branch 'mas-d32-leveled.i388-logger' of https://github.com/martinsumner/leveled into mas-d32-leveled.i388-logger","shortMessageHtmlLink":"Merge branch 'mas-d32-leveled.i388-logger' of https://github.com/mart…"}},{"before":"a814e8325203d2004c42ae4149a9411071afa569","after":"54b08167616ad428e30a7e5435b09e1e07c814aa","ref":"refs/heads/mas-d32-leveled.i388-logger","pushedAt":"2024-09-03T15:53:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update test/end_to_end/tictac_SUITE.erl\n\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Update test/end_to_end/tictac_SUITE.erl"}},{"before":"acf30599e992995acb545b98ea464f769f5a53af","after":"af0f2bb2cf41fed7d8c8c74de5c4bc867b68c552","ref":"refs/heads/develop-3.4","pushedAt":"2024-09-03T15:51:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Make tictac more efficient by making level1 a map (#441)\n\n* Make tictac more efficient by making level1 a map\r\n\r\nPre-change (1M keys, tree size large):\r\n\r\nGenerating Keys took 2513 milliseconds\r\nMemory footprint [{total,356732576},{processes,334051328},{processes_used,334044488},{system,22681248},{atom,540873},{atom_used,524383},{binary,1015120},{code,9692859},{ets,721496}]\r\nGenerating new tree took 1 milliseconds\r\nLoading tree took 27967 milliseconds\r\nMemory footprint [{total,36733040},{processes,8875472},{processes_used,8875048},{system,27857568},{atom,540873},{atom_used,524449},{binary,6236480},{code,9692859},{ets,721496}]\r\nExporting tree took 434 milliseconds\r\nImporting tree took 100 milliseconds\r\nMemory footprint [{total,155941512},{processes,123734808},{processes_used,123734384},{system,32206704},{atom,540873},{atom_used,524449},{binary,10401144},{code,9692859},{ets,721496}]\r\nGarbage collect\r\nMemory footprint [{total,39660504},{processes,8257520},{processes_used,8256968},{system,31402984},{atom,540873},{atom_used,524449},{binary,9781760},{code,9692859},{ets,721496}]\r\n\r\nPost change:\r\n\r\nGenerating Keys took 2416 milliseconds\r\nMemory footprint [{total,284678120},{processes,258349528},{processes_used,257758568},{system,26328592},{atom,893161},{atom_used,878150},{binary,1013880},{code,11770188},{ets,774224}]\r\nGenerating new tree took 0 milliseconds\r\nLoading tree took 2072 milliseconds\r\nMemory footprint [{total,49957448},{processes,17244856},{processes_used,16653896},{system,32712592},{atom,893161},{atom_used,878216},{binary,7397496},{code,11770188},{ets,774224}]\r\nExporting tree took 448 milliseconds\r\nImporting tree took 108 milliseconds\r\nMemory footprint [{total,46504880},{processes,11197344},{processes_used,10606384},{system,35307536},{atom,893161},{atom_used,878216},{binary,9992112},{code,11770188},{ets,774224}]\r\nGarbage collect\r\nMemory footprint [{total,47394048},{processes,12223608},{processes_used,11632520},{system,35170440},{atom,893161},{atom_used,878216},{binary,9855008},{code,11770188},{ets,774224}]\r\n\r\n* Tidy-up\r\n\r\n* Add type\r\n\r\n* Remove ++ requiring copy of Acc\r\n\r\nRely on mechanism producing a sorted result, not sorting\r\n\r\n* Update src/leveled_tictac.erl\r\n\r\nCo-authored-by: Thomas Arts \r\n\r\n* Update following review\r\n\r\n---------\r\n\r\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Make tictac more efficient by making level1 a map (#441)"}},{"before":"d1dc0a57ab840defb18cf0edceec4f420812eb68","after":null,"ref":"refs/heads/mas-d31-maskit.i116-level1map","pushedAt":"2024-09-03T15:34:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"}},{"before":"d45356a4f748ce06cd62fb0221f50658ccfd8588","after":"da092d01bc7229f3f2d5e2bf9e94fb47e11a258f","ref":"refs/heads/develop-3.1","pushedAt":"2024-09-03T15:34:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Make tictac more efficient by making level1 a map (#441)\n\n* Make tictac more efficient by making level1 a map\r\n\r\nPre-change (1M keys, tree size large):\r\n\r\nGenerating Keys took 2513 milliseconds\r\nMemory footprint [{total,356732576},{processes,334051328},{processes_used,334044488},{system,22681248},{atom,540873},{atom_used,524383},{binary,1015120},{code,9692859},{ets,721496}]\r\nGenerating new tree took 1 milliseconds\r\nLoading tree took 27967 milliseconds\r\nMemory footprint [{total,36733040},{processes,8875472},{processes_used,8875048},{system,27857568},{atom,540873},{atom_used,524449},{binary,6236480},{code,9692859},{ets,721496}]\r\nExporting tree took 434 milliseconds\r\nImporting tree took 100 milliseconds\r\nMemory footprint [{total,155941512},{processes,123734808},{processes_used,123734384},{system,32206704},{atom,540873},{atom_used,524449},{binary,10401144},{code,9692859},{ets,721496}]\r\nGarbage collect\r\nMemory footprint [{total,39660504},{processes,8257520},{processes_used,8256968},{system,31402984},{atom,540873},{atom_used,524449},{binary,9781760},{code,9692859},{ets,721496}]\r\n\r\nPost change:\r\n\r\nGenerating Keys took 2416 milliseconds\r\nMemory footprint [{total,284678120},{processes,258349528},{processes_used,257758568},{system,26328592},{atom,893161},{atom_used,878150},{binary,1013880},{code,11770188},{ets,774224}]\r\nGenerating new tree took 0 milliseconds\r\nLoading tree took 2072 milliseconds\r\nMemory footprint [{total,49957448},{processes,17244856},{processes_used,16653896},{system,32712592},{atom,893161},{atom_used,878216},{binary,7397496},{code,11770188},{ets,774224}]\r\nExporting tree took 448 milliseconds\r\nImporting tree took 108 milliseconds\r\nMemory footprint [{total,46504880},{processes,11197344},{processes_used,10606384},{system,35307536},{atom,893161},{atom_used,878216},{binary,9992112},{code,11770188},{ets,774224}]\r\nGarbage collect\r\nMemory footprint [{total,47394048},{processes,12223608},{processes_used,11632520},{system,35170440},{atom,893161},{atom_used,878216},{binary,9855008},{code,11770188},{ets,774224}]\r\n\r\n* Tidy-up\r\n\r\n* Add type\r\n\r\n* Remove ++ requiring copy of Acc\r\n\r\nRely on mechanism producing a sorted result, not sorting\r\n\r\n* Update src/leveled_tictac.erl\r\n\r\nCo-authored-by: Thomas Arts \r\n\r\n* Update following review\r\n\r\n---------\r\n\r\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Make tictac more efficient by making level1 a map (#441)"}},{"before":"9a03e0f1fa392b8bedcb193afa0e36899298e008","after":"d1dc0a57ab840defb18cf0edceec4f420812eb68","ref":"refs/heads/mas-d31-maskit.i116-level1map","pushedAt":"2024-09-03T15:29:31.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Merge branch 'mas-d31-maskit.i116-level1map' of https://github.com/martinsumner/leveled into mas-d31-maskit.i116-level1map","shortMessageHtmlLink":"Merge branch 'mas-d31-maskit.i116-level1map' of https://github.com/ma…"}},{"before":"45c05d4e258ebc611c648cd4a2edebd56e17860a","after":"9a03e0f1fa392b8bedcb193afa0e36899298e008","ref":"refs/heads/mas-d31-maskit.i116-level1map","pushedAt":"2024-09-03T15:04:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Update src/leveled_tictac.erl\n\nCo-authored-by: Thomas Arts ","shortMessageHtmlLink":"Update src/leveled_tictac.erl"}},{"before":"fdc9e128d34d10874d8dcbe585fd28d64c94634a","after":"4126570c61fc679683718cd8e947e9fa79f8900d","ref":"refs/heads/mas-i449-directpromptofdeletions","pushedAt":"2024-09-03T15:02:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Change cache sizes\n\nIn the hope of making test more consistent","shortMessageHtmlLink":"Change cache sizes"}},{"before":"bee0179cc1b48c1bd870e9d373ea43d1f27f7a9a","after":"fdc9e128d34d10874d8dcbe585fd28d64c94634a","ref":"refs/heads/mas-i449-directpromptofdeletions","pushedAt":"2024-09-03T13:40:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"martinsumner","name":"Martin Sumner","path":"/martinsumner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1628897?s=80&v=4"},"commit":{"message":"Rename","shortMessageHtmlLink":"Rename"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEugIvewA","startCursor":null,"endCursor":null}},"title":"Activity · martinsumner/leveled"}