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

Vectors in UPLC #5816

Merged
merged 6 commits into from Apr 12, 2024
Merged

Vectors in UPLC #5816

merged 6 commits into from Apr 12, 2024

Conversation

michaelpj
Copy link
Contributor

Don't look here

@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:nofib

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Comparing benchmark results of 'plutus-benchmark:nofib' on '1f9b73f94' (base) and 'f221fec18' (PR)

Results table
Script 1f9b73f f221fec Change
clausify/formula1 3.890 ms 2.826 ms -27.4%
clausify/formula2 5.116 ms 3.732 ms -27.1%
clausify/formula3 13.88 ms 10.14 ms -26.9%
clausify/formula4 28.67 ms 22.62 ms -21.1%
clausify/formula5 67.06 ms 49.02 ms -26.9%
knights/4x4 18.23 ms 15.30 ms -16.1%
knights/6x6 48.48 ms 39.32 ms -18.9%
knights/8x8 85.23 ms 68.61 ms -19.5%
primetest/05digits 9.139 ms 8.832 ms -3.4%
primetest/08digits 14.65 ms 14.20 ms -3.1%
primetest/10digits 17.68 ms 17.13 ms -3.1%
primetest/20digits 35.13 ms 33.84 ms -3.7%
primetest/30digits 53.80 ms 51.44 ms -4.4%
primetest/40digits 72.71 ms 70.38 ms -3.2%
primetest/50digits 88.42 ms 85.18 ms -3.7%
queens4x4/bt 5.680 ms 4.851 ms -14.6%
queens4x4/bm 7.393 ms 6.306 ms -14.7%
queens4x4/bjbt1 7.030 ms 5.994 ms -14.7%
queens4x4/bjbt2 6.501 ms 5.565 ms -14.4%
queens4x4/fc 15.22 ms 12.84 ms -15.6%
queens5x5/bt 76.03 ms 64.77 ms -14.8%
queens5x5/bm 83.03 ms 70.78 ms -14.8%
queens5x5/bjbt1 89.62 ms 76.66 ms -14.5%
queens5x5/bjbt2 86.67 ms 74.09 ms -14.5%
queens5x5/fc 193.1 ms 162.2 ms -16.0%

@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:marlowe

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Comparing benchmark results of 'plutus-benchmark:marlowe' on '1f9b73f94' (base) and 'f221fec18' (PR)

Results table
Script 1f9b73f f221fec Change
semantics/ffdd68a33afd86f8844c9f5e45b2bda5b035aa02274161b23d57709c0f8b8de6 907.5 μs 906.3 μs -0.1%
semantics/f339f59bdf92495ed2b14e2e4d3705972b4dda59aa929cffe0f1ff5355db8d79 4.499 ms 4.448 ms -1.1%
semantics/f2a8fd2014922f0d8e01541205d47e9bb2d4e54333bdd408cbe7c47c55e73ae4 692.2 μs 685.3 μs -1.0%
semantics/ecb5e8308b57724e0f8533921693f111eba942123cf8660aac2b5bac21ec28f0 630.1 μs 629.6 μs -0.1%
semantics/eb4a605ed3a64961e9e66ad9631c2813dadf7131740212762ae4483ec749fe1d 287.2 μs 285.5 μs -0.6%
semantics/e9234d2671760874f3f660aae5d3416d18ce6dfd7af4231bdd41b9ec268bc7e1 906.5 μs 894.2 μs -1.4%
semantics/e3afd22d01ff12f381cf915fd32358634e6c413f979f2492cf3339319d8cc079 291.3 μs 288.8 μs -0.9%
semantics/e34b48f80d49360e88c612f4016f7d68cb5678dd8cd5ddb981375a028b3a40a5 385.4 μs 384.4 μs -0.3%
semantics/e26c1cddba16e05fd10c34cbdb16ea6acdbac7c8323256c31c90c520ee6a1080 361.9 μs 360.8 μs -0.3%
semantics/dd11ae574eaeab0e9925319768989313a93913fdc347c704ddaa27042757d990 725.6 μs 725.8 μs +0.0%
semantics/dc241ac6ad1e04fb056d555d6a4f2d08a45d054c6f7f34355fcfeefebef479f3 443.9 μs 445.3 μs +0.3%
semantics/d64607eb8a1448595081547ea8780886fcbd9e06036460eea3705c88ea867e33 287.0 μs 286.4 μs -0.2%
semantics/d1c03759810747b7cab38c4296593b38567e11195d161b5bb0a2b58f89b2c65a 965.0 μs 964.3 μs -0.1%
semantics/d1ab832dfab25688f8845bec9387e46ee3f00ba5822197ade7dd540489ec5e95 38.06 ms 37.99 ms -0.2%
semantics/cf542b7df466b228ca2197c2aaa89238a8122f3330fe5b77b3222f570395d9f5 471.5 μs 469.6 μs -0.4%
semantics/ced1ea04649e093a501e43f8568ac3e6b37cd3eccec8cac9c70a4857b88a5eb8 807.9 μs 803.3 μs -0.6%
semantics/cdb9d5c233b288a5a9dcfbd8d5c1831a0bb46eec7a26fa31b80ae69d44805efc 843.9 μs 844.9 μs +0.1%
semantics/ccab11ce1a8774135d0e3c9e635631b68af9e276b5dabc66ff669d5650d0be1c 982.2 μs 954.8 μs -2.8%
semantics/c9efcb705ee057791f7c18a1de79c49f6e40ba143ce0579f1602fd780cabf153 782.1 μs 780.8 μs -0.2%
semantics/c4bb185380df6e9b66fc1ee0564f09a8d1253a51a0c0c7890f2214df9ac19274 700.1 μs 696.8 μs -0.5%
semantics/bb5345bfbbc460af84e784b900ec270df1948bb1d1e29eacecd022eeb168b315 920.2 μs 917.2 μs -0.3%
semantics/b50170cea48ee84b80558c02b15c6df52faf884e504d2c410ad63ba46d8ca35c 733.5 μs 731.1 μs -0.3%
semantics/b21a4df3b0266ad3481a26d3e3d848aad2fcde89510b29cccce81971e38e0835 1.286 ms 1.281 ms -0.4%
semantics/ad6db94ed69b7161c7604568f44358e1cc11e81fea90e41afebd669e51bb60c8 568.6 μs 566.8 μs -0.3%
semantics/acce04815e8fd51be93322888250060da173eccf3df3a605bd6bc6a456cde871 278.7 μs 275.0 μs -1.3%
semantics/acb9c83c2b78dabef8674319ad69ba54912cd9997bdf2d8b2998c6bfeef3b122 633.8 μs 631.2 μs -0.4%
semantics/a9a853b6d083551f4ed2995551af287880ef42aee239a2d9bc5314d127cce592 489.8 μs 485.6 μs -0.9%
semantics/a85173a832db3ea944fafc406dfe3fa3235254897d6d1d0e21bc380147687bd5 352.2 μs 349.8 μs -0.7%
semantics/9fabc4fc3440cdb776b28c9bb1dd49c9a5b1605fe1490aa3f4f64a3fa8881b25 962.2 μs 954.3 μs -0.8%
semantics/96e1a2fa3ceb9a402f2a5841a0b645f87b4e8e75beb636692478ec39f74ee221 290.9 μs 289.3 μs -0.6%
semantics/8d9ae67656a2911ab15a8e5301c960c69aa2517055197aff6b60a87ff718d66c 353.8 μs 352.8 μs -0.3%
semantics/8c7fdc3da6822b5112074380003524f50fb3a1ce6db4e501df1086773c6c0201 1.104 ms 1.102 ms -0.2%
semantics/82213dfdb6a812b40446438767c61a388d2c0cfd0cbf7fd4a372b0dc59fa17e1 1.199 ms 1.184 ms -1.3%
semantics/7cbc5644b745f4ea635aca42cce5e4a4b9d2e61afdb3ac18128e1688c07071ba 470.4 μs 469.0 μs -0.3%
semantics/7a758e17486d1a30462c32a5d5309bd1e98322a9dcbe277c143ed3aede9d265f 488.8 μs 485.2 μs -0.7%
semantics/75a8bb183688bce447e00f435a144c835435e40a5defc6f3b9be68b70b4a3db6 655.6 μs 653.0 μs -0.4%
semantics/7529b206a78becb793da74b78c04d9d33a2540a1abd79718e681228f4057403a 766.1 μs 765.0 μs -0.1%
semantics/74c67f2f182b9a0a66c62b95d6fac5ace3f7e71ea3abfc52ffbe3ecb93436ea2 762.9 μs 759.3 μs -0.5%
semantics/71965c9ccae31f1ffc1d85aa20a356d4ed97a420954018d8301ec4f9783be0d7 454.6 μs 451.0 μs -0.8%
semantics/70f65b21b77ddb451f3df9d9fb403ced3d10e1e953867cc4900cc25e5b9dec47 736.3 μs 732.4 μs -0.5%
semantics/6d88f7294dd2b5ce02c3dc609bc7715bd508009738401d264bf9b3eb7c6f49c1 470.3 μs 468.0 μs -0.5%
semantics/67ba5a9a0245ee3aff4f34852b9889b8c810fccd3dce2a23910bddd35c503b71 5.683 ms 5.646 ms -0.7%
semantics/675d63836cad11b547d1b4cddd498f04c919d4342612accf40913f9ae9419fac 981.5 μs 979.6 μs -0.2%
semantics/66af9e473d75e3f464971f6879cc0f2ef84bafcb38fbfa1dbc31ac2053628a38 1.260 ms 1.241 ms -1.5%
semantics/65bc4b69b46d18fdff0fadbf00dd5ec2b3e03805fac9d5fb4ff2d3066e53fc7e 2.295 ms 2.276 ms -0.8%
semantics/64c3d5b43f005855ffc4d0950a02fd159aa1575294ea39061b81a194ebb9eaae 641.1 μs 637.9 μs -0.5%
semantics/5f3d46c57a56cef6764f96c9de9677ac6e494dd7a4e368d1c8dd9c1f7a4309a5 469.4 μs 466.4 μs -0.6%
semantics/5f306b4b24ff2b39dab6cdc9ac6ca9bb442c1dc6f4e7e412eeb5a3ced42fb642 728.6 μs 727.0 μs -0.2%
semantics/5f130d19918807b60eab4c03119d67878fb6c6712c28c54f5a25792049294acc 290.1 μs 289.3 μs -0.3%
semantics/5e2c68ac9f62580d626636679679b97109109df7ac1a8ce86d3e43dfb5e4f6bc 495.3 μs 494.4 μs -0.2%
semantics/5e274e0f593511543d41570a4b03646c1d7539062b5728182e073e5760561a66 954.2 μs 951.6 μs -0.3%
semantics/5d0a88250f13c49c20e146819357a808911c878a0e0a7d6f7fe1d4a619e06112 989.5 μs 982.3 μs -0.7%
semantics/5abae75af26f45658beccbe48f7c88e74efdfc0b8409ba1e98f95fa5b6caf999 466.8 μs 466.1 μs -0.1%
semantics/57728d8b19b0e06412786f3dfed9e1894cd0ad1d2bc2bd497ec0ecb68f989d2b 287.0 μs 285.3 μs -0.6%
semantics/56333d4e413dbf1a665463bf68067f63c118f38f7539b7ba7167d577c0c8b8ce 745.0 μs 741.8 μs -0.4%
semantics/55dfe42688ad683b638df1fa7700219f00f53b335a85a2825502ab1e0687197e 287.3 μs 285.2 μs -0.7%
semantics/53ed4db7ab33d6f907eec91a861d1188269be5ae1892d07ee71161bfb55a7cb7 352.3 μs 349.4 μs -0.8%
semantics/52df7c8dfaa5f801cd837faa65f2fd333665fff00a555ce8c55e36ddc003007a 346.5 μs 343.3 μs -0.9%
semantics/4f9e8d361b85e62db2350dd3ae77463540e7af0d28e1eb68faeecc45f4655f57 391.3 μs 388.6 μs -0.7%
semantics/4d7adf91bfc93cebe95a7e054ec17cfbb912b32bd8aecb48a228b50e02b055c8 657.0 μs 655.4 μs -0.2%
semantics/4c3efd13b6c69112a8a888372d56c86e60c232125976f29b1c3e21d9f537845c 971.6 μs 970.3 μs -0.1%
semantics/44a9e339fa25948b48637fe7e10dcfc6d1256319a7b5ce4202cb54dfef8e37e7 287.5 μs 284.5 μs -1.0%
semantics/3db496e6cd39a8b888a89d0de07dace4397878958cab3b9d9353978b08c36d8a 776.4 μs 768.6 μs -1.0%
semantics/3bb75b2e53eb13f718eacd3263ab4535f9137fabffc9de499a0de7cabb335479 287.8 μs 286.1 μs -0.6%
semantics/383683bfcecdab0f4df507f59631c702bd11a81ca3841f47f37633e8aacbb5de 731.9 μs 726.5 μs -0.7%
semantics/33c3efd79d9234a78262b52bc6bbf8124cb321a467dedb278328215167eca455 603.0 μs 598.2 μs -0.8%
semantics/331e4a1bb30f28d7073c54f9a13c10ae19e2e396c299a0ce101ee6bf4b2020db 442.1 μs 441.9 μs -0.0%
semantics/322acde099bc34a929182d5b894214fc87ec88446e2d10625119a9d17fa3ec3d 290.8 μs 288.9 μs -0.7%
semantics/30aa34dfbe89e0c43f569929a96c0d2b74c321d13fec0375606325eee9a34a6a 1.099 ms 1.095 ms -0.4%
semantics/2f58c9d884813042bce9cf7c66048767dff166785e8b5183c8139db2aa7312d1 737.9 μs 733.4 μs -0.6%
semantics/2cb21612178a2d9336b59d06cbf80488577463d209a453048a66c6eee624a695 736.2 μs 734.0 μs -0.3%
semantics/28fdce478e179db0e38fb5f3f4105e940ece450b9ce8a0f42a6e313b752e6f2c 875.0 μs 862.1 μs -1.5%
semantics/2797d7ac77c1b6aff8e42cf9a47fa86b1e60f22719a996871ad412cbe4de78b5 1.788 ms 1.740 ms -2.7%
semantics/26e24ee631a6d927ea4fb4fac530cfd82ff7636986014de2d2aaa460ddde0bc3 540.1 μs 539.9 μs -0.0%
semantics/238b21364ab5bdae3ddb514d7001c8feba128b4ddcf426852b441f9a9d02c882 288.1 μs 285.0 μs -1.1%
semantics/21953bf8798b28df60cb459db24843fb46782b19ba72dc4951941fb4c20d2263 352.1 μs 351.3 μs -0.2%
semantics/202d273721330b31193405101e0637202e2a0f1140211c3e3f171e26312b0220 5.593 ms 5.585 ms -0.1%
semantics/1f0f02191604101e1f201016171604060d010d1d1c150e110a110e1006160a0d 992.1 μs 969.0 μs -2.3%
semantics/1d6e3c137149a440f35e0efc685b16bfb8052ebcf66ec4ad77e51c11501381c7 289.5 μs 288.2 μs -0.4%
semantics/1d56060c3b271226064c672a282663643b1b0823471c67737f0b076870331260 740.5 μs 734.8 μs -0.8%
semantics/1a573aed5c46d637919ccb5548dfc22a55c9fc38298d567d15ee9f2eea69d89e 871.6 μs 869.4 μs -0.3%
semantics/1a2f2540121f09321216090b2b1f211e3f020c2c133a1a3c3f3c232a26153a04 289.9 μs 289.5 μs -0.1%
semantics/18cefc240debc0fcab14efdd451adfd02793093efe7bc76d6322aed6ddb582ad 707.3 μs 703.5 μs -0.5%
semantics/12910f24d994d451ff379b12c9d1ecdb9239c9b87e5d7bea570087ec506935d5 471.2 μs 468.6 μs -0.6%
semantics/119fbea4164e2bf21d2b53aa6c2c4e79414fe55e4096f5ce2e804735a7fbaf91 708.7 μs 705.9 μs -0.4%
semantics/0f1d0110001b121d051e15140c0c05141d151c1f1d201c040f10091b020a0e1a 451.9 μs 450.8 μs -0.2%
semantics/0be82588e4e4bf2ef428d2f44b7687bbb703031d8de696d90ec789e70d6bc1d8 1.306 ms 1.307 ms +0.1%
semantics/0bcfd9487614104ec48de2ea0b2c0979866a95115748c026f9ec129384c262c4 1.060 ms 1.058 ms -0.2%
semantics/07070c070510030509010e050d00040907050e0a0d06030f1006030701020607 959.9 μs 958.5 μs -0.1%
semantics/0705030002040601010206030604080208020207000101060706050502040301 1.024 ms 1.013 ms -1.1%
semantics/0543a00ba1f63076c1db6bf94c6ff13ae7d266dd7544678743890b0e8e1add63 958.5 μs 950.0 μs -0.9%
semantics/04000f0b04051006000e060f09080d0b090d0104050a0b0f0506070f0a070008 701.5 μs 698.5 μs -0.4%
semantics/0104010200020000040103020102020004040300030304040400010301040303 728.0 μs 723.8 μs -0.6%
semantics/0101080808040600020306010000000302050807010208060100070207080202 738.3 μs 736.7 μs -0.2%
semantics/0101020201010201010200010102000201000201010102000102010201010000 287.3 μs 285.5 μs -0.6%
semantics/0101010001010101010101000100010100000001010000010001000001000101 881.1 μs 871.7 μs -1.1%
semantics/004025fd712d6c325ffa12c16d157064192992faf62e0b991d7310a2f91666b8 756.6 μs 755.1 μs -0.2%
semantics/0003040402030103010203030303000200000104030002040304020400000102 988.3 μs 987.9 μs -0.0%
semantics/0001000101000000010101000001000001010101010100000001000001010000 434.6 μs 432.7 μs -0.4%
semantics/0000020002010200020101020201000100010001020101020201010000020102 307.7 μs 306.2 μs -0.5%
role-payout/ff38b1ec89952d0247630f107a90cbbeb92ecbfcd19b284f60255718e4ec7548 178.5 μs 179.7 μs +0.7%
role-payout/fc8c5f45ffcdb024c21e0f34b22c23de8045a94d5e1a5bda1555c45ddb059f82 154.3 μs 154.0 μs -0.2%
role-payout/f7275afb60e33a550df13a132102e7e925dd28965a4efbe510a89b077ff9417f 148.4 μs 148.0 μs -0.3%
role-payout/f53e8cafe26647ccce51e4c31db13608aea1f39034c0f52dee2e5634ef66e747 163.6 μs 163.5 μs -0.1%
role-payout/f2932e4ca4bbb94b0a9ffbe95fcb7bd5639d9751d75d56d5e14efa5bbed981df 145.4 μs 144.5 μs -0.6%
role-payout/f1a1e6a487f91feca5606f72bbb1e948c71abf043c6a0ea83bfea9ec6a0f08d8 147.4 μs 147.7 μs +0.2%
role-payout/ee3962fbd7373360f46decef3c9bda536a0b1daf6cda3b8a4bcfd6deeb5b4c53 172.7 μs 172.3 μs -0.2%
role-payout/ec4712ee820eb959a43ebedfab6735f2325fa52994747526ffd2a4f4f84dd58e 170.1 μs 170.8 μs +0.4%
role-payout/eabeeae18131af89fa57936c0e9eb8d2c7adba534f7e1a517d75410028fa0d6c 147.6 μs 148.2 μs +0.4%
role-payout/df487b2fd5c1583fa33644423849bc1ab5f02f37edc0c235f34ef01cb12604f6 154.4 μs 154.2 μs -0.1%
role-payout/dc45c5f1b700b1334db99f50823321daaef0e6925b9b2fabbc9df7cde65af62e 152.9 μs 152.7 μs -0.1%
role-payout/da353bf9219801fa1bf703fc161497570954e9af7e10ffe95c911a9ef97e77bd 153.8 μs 154.3 μs +0.3%
role-payout/d6bc8ac4155e22300085784148bbc9d9bbfea896e1009dd396610a90e3943032 173.3 μs 173.0 μs -0.2%
role-payout/d5cda74eb0947e025e02fb8ed365df39d0a43e4b42cd3573ac2d8fcb29115997 164.6 μs 165.4 μs +0.5%
role-payout/cc1e82927f6c65b3e912200ae30588793d2066e1d4a6627c21955944ac9bd528 170.7 μs 170.3 μs -0.2%
role-payout/cb2ab8e22d1f64e8d204dece092e90e9bf1fa8b2a6e9cba5012dbe4978065832 148.0 μs 148.5 μs +0.3%
role-payout/caa409c40e39aed9b0f59214b4baa178c375526dea6026b4552b88d2cc729716 139.3 μs 139.3 μs 0.0%
role-payout/c99ecc2146ce2066ba6dffc734923264f8794815acbc2ec74c2c2c42ba272e4d 188.5 μs 188.8 μs +0.2%
role-payout/c78eeba7681d2ab51b4758efa4c812cc041928837c6e7563d8283cce67ce2e02 159.7 μs 160.2 μs +0.3%
role-payout/c4d4c88c5fe378a25a034025994a0d0b1642f10c8e6e513f872327fa895bfc7e 161.4 μs 161.2 μs -0.1%
role-payout/c11490431db3a92efdda70933ba411a0423935e73a75c856e326dbcf6672f3bf 147.7 μs 147.0 μs -0.5%
role-payout/bd79f4a84db23b7c4cd219d498bd581e085cbc3437957e74a8862281a700700b 171.3 μs 171.3 μs 0.0%
role-payout/bd460b7549b70c52e37b312a4242041eac18fe4a266f018bcea0c78a9085a271 172.5 μs 172.3 μs -0.1%
role-payout/bcdbc576d63b0454100ad06893812edafc2e7e4934fec1b44e2d06eb34f36eb8 148.2 μs 147.8 μs -0.3%
role-payout/b869f3928200061abb1c3060425b9354b0e08cbf4400b340b8707c14b34317cd 222.5 μs 222.8 μs +0.1%
role-payout/b6243a5b4c353ce4852aa41705111d57867d2783eeef76f6d59beb2360da6e90 205.6 μs 205.2 μs -0.2%
role-payout/b43564af5f13cc5208b92b1ad6d45369446f378d3891e5cb3e353b30d4f3fb10 147.8 μs 147.3 μs -0.3%
role-payout/af2e072b5adfaa7211e0b341e1f7319c4f4e7364a4247c9247132a927e914753 176.5 μs 176.0 μs -0.3%
role-payout/a92b4072cb8601fa697e1150c08463b14ffced54eb963df08d322216e27373cb 148.5 μs 147.6 μs -0.6%
role-payout/a7cb09f417c3f089619fe25b7624392026382b458486129efcff18f8912bf302 147.6 μs 147.0 μs -0.4%
role-payout/a6f064b83b31032ea7f25921364727224707268e472a569f584cc6b1d8c017e8 148.1 μs 147.7 μs -0.3%
role-payout/a6664a2d2a82f370a34a36a45234f6b33120a39372331678a3b3690312560ce9 187.4 μs 187.1 μs -0.2%
role-payout/a27524cfad019df45e4e8316f927346d4cc39da6bdd294fb2c33c3f58e6a8994 147.5 μs 147.5 μs 0.0%
role-payout/a1b25347409c3993feca1a60b6fcaf93d1d4bbaae19ab06fdf50cedc26cee68d 142.6 μs 142.8 μs +0.1%
role-payout/a0fba5740174b5cd24036c8b008cb1efde73f1edae097b9325c6117a0ff40d3b 165.4 μs 165.9 μs +0.3%
role-payout/a004a989c005d59043f996500e110fa756ad1b85800b889d5815a0106388e1d7 157.7 μs 158.1 μs +0.3%
role-payout/996804e90f2c75fe68886fc8511304b8ab9b36785f8858f5cb098e91c159dde9 152.0 μs 152.3 μs +0.2%
role-payout/962c2c658b19904372984a56409707401e64e9b03c1986647134cfd329ec5139 162.7 μs 161.5 μs -0.7%
role-payout/8c0fa5d9d6724c5c72c67e055d4bfc36a385ded7c3c81c08cdbd8705829af6e6 180.3 μs 179.3 μs -0.6%
role-payout/87167fc5469adac97c1be749326fa79a6b7862ce68aa4abcb438e3c034bd0899 180.3 μs 180.0 μs -0.2%
role-payout/803eae94d62e2afc0e835c204af8362170301bc329e2d849d5f5a47dddf479ec 170.8 μs 171.3 μs +0.3%
role-payout/7b1dd76edc27f00eb382bf996378155baf74d6a7c6f3d5ec837c39d29784aade 148.1 μs 147.6 μs -0.3%
role-payout/73f044f34a30f26639c58bafe952047f74c7bf1eafebab5aadf5b73cfb9024ed 147.3 μs 147.3 μs 0.0%
role-payout/6d66bddb4269bdf77392d3894da5341cf019d39787522af4f83f01285991e93c 148.5 μs 147.8 μs -0.5%
role-payout/6c364699767a84059ffd99cf718562a8c09d96e343f23dc481e8ffda13af424f 147.5 μs 147.4 μs -0.1%
role-payout/6b7bc2b9002a71b33cfd535d43f26334a283d0b9ad189b7cd74baac232c3b9fc 139.8 μs 139.7 μs -0.1%
role-payout/674b0577409957172ad85223c765d17e94c27714276c49c38dfae0a47a561a1e 143.2 μs 144.4 μs +0.8%
role-payout/6621a69217f09d91f42876a9c0cecf79de0e29bdd5b16c82c6c52cf959092ec4 165.3 μs 165.1 μs -0.1%
role-payout/622a7f3bc611b5149253c9189da022a9ff296f60a5b7c172a6dc286faa7284fa 181.4 μs 181.4 μs 0.0%
role-payout/5efe992e306e31cc857c64a62436ad2f9325acc5b4a74a8cebccdfd853ce63d2 153.3 μs 154.2 μs +0.6%
role-payout/5d4c62a0671c65a14f6a15093e3efc4f1816d95a5a58fd92486bedaae8d9526b 175.0 μs 174.2 μs -0.5%
role-payout/5ade103e9530dd0d572fe1b053ea65ad925c6ebbe321e873ace8b804363fa82c 212.6 μs 214.0 μs +0.7%
role-payout/5a2aae344e569a2c644dd9fa8c7b1f129850937eb562b7748c275f9e40bed596 147.2 μs 147.7 μs +0.3%
role-payout/5a0725d49c733130eda8bc6ed5234f7f6ff8c9dd2d201e8806125e5fbcc081f9 157.8 μs 157.7 μs -0.1%
role-payout/4fbcfdb577a56b842d6f6938187a783f71d9da7519353e3da3ef0c564e1eb344 186.4 μs 186.3 μs -0.1%
role-payout/4dd7755b6ca1f0c9747c1fc0ee4da799f6f1c07108e980bd9f820911ad711ff2 200.4 μs 199.5 μs -0.4%
role-payout/49b8275d0cb817be40865694ab05e3cfe5fc35fb43b78e7de68c1f3519b536bd 153.5 μs 153.8 μs +0.2%
role-payout/47364cfaf2c00f7d633283dce6cf84e4fd4e8228c0a0aa50e7c55f35c3ecaa1c 146.7 μs 147.2 μs +0.3%
role-payout/46f8d00030436e4da490a86b331fa6c3251425fb8c19556080e124d75bad7bd6 147.5 μs 147.4 μs -0.1%
role-payout/452e17d16222a427707fa83f63ffb79f606cc25c755a18b1e3274c964ed5ec99 180.5 μs 180.1 μs -0.2%
role-payout/4299c7fcf093a5dbfe114c188e32ca199b571a7c25cb7f766bf49f12dab308be 162.0 μs 162.6 μs +0.4%
role-payout/4121d88f14387d33ac5e1329618068e3848445cdd66b29e5ba382be2e02a174a 177.2 μs 177.1 μs -0.1%
role-payout/3897ef714bba3e6821495b706c75f8d64264c3fdaa58a3826c808b5a768c303d 151.3 μs 153.8 μs +1.7%
role-payout/371c10d2526fc0f09dbe9ed59e44dcd949270b27dc42035addd7ff9f7e0d05e7 179.0 μs 180.0 μs +0.6%
role-payout/36866914aa07cf62ef36cf2cd64c7f240e3371e27bb9fff5464301678e809c40 145.5 μs 144.3 μs -0.8%
role-payout/3569299fc986f5354d02e627a9eaa48ab46d5af52722307a0af72bae87e256dc 146.1 μs 145.4 μs -0.5%
role-payout/3565ee025317e065e8555eef288080276716366769aad89e03389f5ec4ce26d7 157.5 μs 157.4 μs -0.1%
role-payout/332c2b1c11383d1b373e1315201f1128010e0e1518332f273f141b23243f2a07 143.3 μs 143.3 μs 0.0%
role-payout/224ce46046fab9a17be4197622825f45cc0c59a6bd1604405148e43768c487ef 145.3 μs 145.9 μs +0.4%
role-payout/21a1426fb3fb3019d5dc93f210152e90b0a6e740ef509b1cdd423395f010e0ca 165.3 μs 165.1 μs -0.1%
role-payout/211e1b6c10260c4620074d2e372c260d38643a3d605f63772524034f0a4a7632 154.6 μs 154.2 μs -0.3%
role-payout/1a20b465d48a585ffd622bd8dc26a498a3c12f930ab4feab3a5064cfb3bc536a 163.3 μs 163.2 μs -0.1%
role-payout/195f522b596360690d04586a2563470f2214163435331a6622311f7323433f1c 143.5 μs 143.6 μs +0.1%
role-payout/159e5a1bf16fe984b5569be7011b61b5e98f5d2839ca7e1b34c7f2afc7ffb58e 148.7 μs 147.9 μs -0.5%
role-payout/121a0a1b12030616111f02121a0e070716090a0e031c071419121f141409031d 146.4 μs 147.0 μs +0.4%
role-payout/1138a04a83edc0579053f9ffa9394b41df38230121fbecebee8c039776a88c0c 145.8 μs 145.4 μs -0.3%
role-payout/0f010d040810040b10020e040f0e030b0a0d100f0c080c0c05000d04100c100f 172.9 μs 172.1 μs -0.5%
role-payout/0e97c9d9417354d9460f2eb35018d3904b7b035af16ab299258adab93be0911a 162.2 μs 161.6 μs -0.4%
role-payout/0e72f62b0f922e31a2340baccc768104025400cf7fdd7dae62fbba5fc770936d 167.8 μs 167.6 μs -0.1%
role-payout/0e00171d0f1e1f14070d0a00091f07101808021d081e1b120219081312081e15 149.1 μs 148.9 μs -0.1%
role-payout/0dbb692d2bf22d25eeceac461cfebf616f54003077a8473abc0457f18e025960 181.5 μs 180.9 μs -0.3%
role-payout/0d0f01050a0a0a0b0b050d0404090e0d0506000d0a041003040e0f100e0a0408 156.1 μs 155.2 μs -0.6%
role-payout/0c9d3634aeae7038f839a1262d1a8bc724dc77af9426459417a56ec73240f0e0 155.4 μs 154.9 μs -0.3%
role-payout/0bdca1cb8fa7e38e09062557b82490714052e84e2054e913092cd84ac071b961 174.5 μs 174.0 μs -0.3%
role-payout/07658a6c898ad6d624c37df1e49e909c2e9349ba7f4c0a6be5f166fe239bfcae 139.4 μs 138.8 μs -0.4%
role-payout/06317060a8e488b1219c9dae427f9ce27918a9e09ee8ac424afa33ca923f7954 157.4 μs 156.7 μs -0.4%
role-payout/057ebc80922f16a5f4bf13e985bf586b8cff37a2f6fe0f3ce842178c16981027 145.9 μs 144.6 μs -0.9%
role-payout/04f592afc6e57c633b9c55246e7c82e87258f04e2fb910c37d8e2417e9db46e5 210.9 μs 212.7 μs +0.9%
role-payout/041a2c3b111139201a3a2c173c392b170e16370d300f2d28342d0f2f0e182e01 178.1 μs 178.4 μs +0.2%
role-payout/0405010105020401010304080005050800040301010800080207080704020206 174.2 μs 173.9 μs -0.2%
role-payout/0403020000030204010000030001000202010101000304030001040404030100 158.2 μs 157.1 μs -0.7%
role-payout/03d730a62332c51c7b70c16c64da72dd1c3ea36c26b41cd1a1e00d39fda3d6cc 172.0 μs 171.4 μs -0.3%
role-payout/031d56d71454e2c4216ffaa275c4a8b3eb631109559d0e56f44ea8489f57ba97 184.1 μs 183.2 μs -0.5%
role-payout/0303020000020001010201060303040208070100050401080304020801030001 146.4 μs 145.7 μs -0.5%
role-payout/0202010002010100020102020102020001010101020102010001010101000100 148.8 μs 147.6 μs -0.8%
role-payout/0201020201020000020000010201020001020200000002010200000101010100 158.4 μs 158.2 μs -0.1%
role-payout/01dcc372ea619cb9f23c45b17b9a0a8a16b7ca0e04093ef8ecce291667a99a4c 141.7 μs 141.3 μs -0.3%
role-payout/0101000100000101010000010101000100010101000001000001000000010101 175.0 μs 174.7 μs -0.2%
role-payout/0100000100010000000001000100010101000101000001000000010000010000 237.0 μs 237.3 μs +0.1%
role-payout/0004000402010401030101030100040000010104020201030001000204020401 162.2 μs 162.3 μs +0.1%

@kwxm
Copy link
Contributor

kwxm commented Mar 4, 2024

/benchmark marlowe

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Comparing benchmark results of 'marlowe' on '1f9b73f94' (base) and 'f221fec18' (PR)

Results table
Script 1f9b73f f221fec Change
semantics/ffdd68a33afd86f8844c9f5e45b2bda5b035aa02274161b23d57709c0f8b8de6 909.0 μs 901.4 μs -0.8%
semantics/f339f59bdf92495ed2b14e2e4d3705972b4dda59aa929cffe0f1ff5355db8d79 4.512 ms 4.437 ms -1.7%
semantics/f2a8fd2014922f0d8e01541205d47e9bb2d4e54333bdd408cbe7c47c55e73ae4 695.6 μs 680.8 μs -2.1%
semantics/ecb5e8308b57724e0f8533921693f111eba942123cf8660aac2b5bac21ec28f0 633.3 μs 626.5 μs -1.1%
semantics/eb4a605ed3a64961e9e66ad9631c2813dadf7131740212762ae4483ec749fe1d 288.2 μs 283.5 μs -1.6%
semantics/e9234d2671760874f3f660aae5d3416d18ce6dfd7af4231bdd41b9ec268bc7e1 907.1 μs 884.3 μs -2.5%
semantics/e3afd22d01ff12f381cf915fd32358634e6c413f979f2492cf3339319d8cc079 291.5 μs 287.8 μs -1.3%
semantics/e34b48f80d49360e88c612f4016f7d68cb5678dd8cd5ddb981375a028b3a40a5 387.6 μs 380.4 μs -1.9%
semantics/e26c1cddba16e05fd10c34cbdb16ea6acdbac7c8323256c31c90c520ee6a1080 363.3 μs 359.0 μs -1.2%
semantics/dd11ae574eaeab0e9925319768989313a93913fdc347c704ddaa27042757d990 728.3 μs 723.1 μs -0.7%
semantics/dc241ac6ad1e04fb056d555d6a4f2d08a45d054c6f7f34355fcfeefebef479f3 445.6 μs 442.1 μs -0.8%
semantics/d64607eb8a1448595081547ea8780886fcbd9e06036460eea3705c88ea867e33 288.3 μs 283.3 μs -1.7%
semantics/d1c03759810747b7cab38c4296593b38567e11195d161b5bb0a2b58f89b2c65a 961.8 μs 959.4 μs -0.2%
semantics/d1ab832dfab25688f8845bec9387e46ee3f00ba5822197ade7dd540489ec5e95 37.87 ms 37.36 ms -1.3%
semantics/cf542b7df466b228ca2197c2aaa89238a8122f3330fe5b77b3222f570395d9f5 472.0 μs 467.2 μs -1.0%
semantics/ced1ea04649e093a501e43f8568ac3e6b37cd3eccec8cac9c70a4857b88a5eb8 807.8 μs 799.8 μs -1.0%
semantics/cdb9d5c233b288a5a9dcfbd8d5c1831a0bb46eec7a26fa31b80ae69d44805efc 846.4 μs 842.3 μs -0.5%
semantics/ccab11ce1a8774135d0e3c9e635631b68af9e276b5dabc66ff669d5650d0be1c 977.1 μs 951.1 μs -2.7%
semantics/c9efcb705ee057791f7c18a1de79c49f6e40ba143ce0579f1602fd780cabf153 782.2 μs 772.0 μs -1.3%
semantics/c4bb185380df6e9b66fc1ee0564f09a8d1253a51a0c0c7890f2214df9ac19274 697.0 μs 692.8 μs -0.6%
semantics/bb5345bfbbc460af84e784b900ec270df1948bb1d1e29eacecd022eeb168b315 919.7 μs 913.2 μs -0.7%
semantics/b50170cea48ee84b80558c02b15c6df52faf884e504d2c410ad63ba46d8ca35c 733.7 μs 727.8 μs -0.8%
semantics/b21a4df3b0266ad3481a26d3e3d848aad2fcde89510b29cccce81971e38e0835 1.288 ms 1.275 ms -1.0%
semantics/ad6db94ed69b7161c7604568f44358e1cc11e81fea90e41afebd669e51bb60c8 567.8 μs 564.3 μs -0.6%
semantics/acce04815e8fd51be93322888250060da173eccf3df3a605bd6bc6a456cde871 279.0 μs 273.6 μs -1.9%
semantics/acb9c83c2b78dabef8674319ad69ba54912cd9997bdf2d8b2998c6bfeef3b122 632.6 μs 629.5 μs -0.5%
semantics/a9a853b6d083551f4ed2995551af287880ef42aee239a2d9bc5314d127cce592 489.7 μs 483.6 μs -1.2%
semantics/a85173a832db3ea944fafc406dfe3fa3235254897d6d1d0e21bc380147687bd5 352.8 μs 347.3 μs -1.6%
semantics/9fabc4fc3440cdb776b28c9bb1dd49c9a5b1605fe1490aa3f4f64a3fa8881b25 962.2 μs 949.5 μs -1.3%
semantics/96e1a2fa3ceb9a402f2a5841a0b645f87b4e8e75beb636692478ec39f74ee221 290.8 μs 288.1 μs -0.9%
semantics/8d9ae67656a2911ab15a8e5301c960c69aa2517055197aff6b60a87ff718d66c 355.0 μs 352.0 μs -0.8%
semantics/8c7fdc3da6822b5112074380003524f50fb3a1ce6db4e501df1086773c6c0201 1.106 ms 1.099 ms -0.6%
semantics/82213dfdb6a812b40446438767c61a388d2c0cfd0cbf7fd4a372b0dc59fa17e1 1.202 ms 1.175 ms -2.2%
semantics/7cbc5644b745f4ea635aca42cce5e4a4b9d2e61afdb3ac18128e1688c07071ba 471.2 μs 467.0 μs -0.9%
semantics/7a758e17486d1a30462c32a5d5309bd1e98322a9dcbe277c143ed3aede9d265f 490.1 μs 485.4 μs -1.0%
semantics/75a8bb183688bce447e00f435a144c835435e40a5defc6f3b9be68b70b4a3db6 657.1 μs 649.8 μs -1.1%
semantics/7529b206a78becb793da74b78c04d9d33a2540a1abd79718e681228f4057403a 768.2 μs 762.2 μs -0.8%
semantics/74c67f2f182b9a0a66c62b95d6fac5ace3f7e71ea3abfc52ffbe3ecb93436ea2 763.4 μs 757.8 μs -0.7%
semantics/71965c9ccae31f1ffc1d85aa20a356d4ed97a420954018d8301ec4f9783be0d7 455.2 μs 450.9 μs -0.9%
semantics/70f65b21b77ddb451f3df9d9fb403ced3d10e1e953867cc4900cc25e5b9dec47 738.0 μs 730.0 μs -1.1%
semantics/6d88f7294dd2b5ce02c3dc609bc7715bd508009738401d264bf9b3eb7c6f49c1 470.9 μs 466.8 μs -0.9%
semantics/67ba5a9a0245ee3aff4f34852b9889b8c810fccd3dce2a23910bddd35c503b71 5.632 ms 5.570 ms -1.1%
semantics/675d63836cad11b547d1b4cddd498f04c919d4342612accf40913f9ae9419fac 983.1 μs 976.8 μs -0.6%
semantics/66af9e473d75e3f464971f6879cc0f2ef84bafcb38fbfa1dbc31ac2053628a38 1.257 ms 1.234 ms -1.8%
semantics/65bc4b69b46d18fdff0fadbf00dd5ec2b3e03805fac9d5fb4ff2d3066e53fc7e 2.285 ms 2.252 ms -1.4%
semantics/64c3d5b43f005855ffc4d0950a02fd159aa1575294ea39061b81a194ebb9eaae 641.2 μs 636.1 μs -0.8%
semantics/5f3d46c57a56cef6764f96c9de9677ac6e494dd7a4e368d1c8dd9c1f7a4309a5 469.7 μs 465.3 μs -0.9%
semantics/5f306b4b24ff2b39dab6cdc9ac6ca9bb442c1dc6f4e7e412eeb5a3ced42fb642 728.8 μs 724.8 μs -0.5%
semantics/5f130d19918807b60eab4c03119d67878fb6c6712c28c54f5a25792049294acc 291.9 μs 287.7 μs -1.4%
semantics/5e2c68ac9f62580d626636679679b97109109df7ac1a8ce86d3e43dfb5e4f6bc 495.2 μs 491.3 μs -0.8%
semantics/5e274e0f593511543d41570a4b03646c1d7539062b5728182e073e5760561a66 956.0 μs 947.7 μs -0.9%
semantics/5d0a88250f13c49c20e146819357a808911c878a0e0a7d6f7fe1d4a619e06112 989.3 μs 980.5 μs -0.9%
semantics/5abae75af26f45658beccbe48f7c88e74efdfc0b8409ba1e98f95fa5b6caf999 465.5 μs 463.9 μs -0.3%
semantics/57728d8b19b0e06412786f3dfed9e1894cd0ad1d2bc2bd497ec0ecb68f989d2b 287.4 μs 284.2 μs -1.1%
semantics/56333d4e413dbf1a665463bf68067f63c118f38f7539b7ba7167d577c0c8b8ce 744.2 μs 742.2 μs -0.3%
semantics/55dfe42688ad683b638df1fa7700219f00f53b335a85a2825502ab1e0687197e 287.1 μs 284.8 μs -0.8%
semantics/53ed4db7ab33d6f907eec91a861d1188269be5ae1892d07ee71161bfb55a7cb7 351.2 μs 348.6 μs -0.7%
semantics/52df7c8dfaa5f801cd837faa65f2fd333665fff00a555ce8c55e36ddc003007a 346.7 μs 342.3 μs -1.3%
semantics/4f9e8d361b85e62db2350dd3ae77463540e7af0d28e1eb68faeecc45f4655f57 391.4 μs 386.4 μs -1.3%
semantics/4d7adf91bfc93cebe95a7e054ec17cfbb912b32bd8aecb48a228b50e02b055c8 658.2 μs 652.4 μs -0.9%
semantics/4c3efd13b6c69112a8a888372d56c86e60c232125976f29b1c3e21d9f537845c 971.1 μs 967.3 μs -0.4%
semantics/44a9e339fa25948b48637fe7e10dcfc6d1256319a7b5ce4202cb54dfef8e37e7 288.0 μs 283.7 μs -1.5%
semantics/3db496e6cd39a8b888a89d0de07dace4397878958cab3b9d9353978b08c36d8a 778.9 μs 765.9 μs -1.7%
semantics/3bb75b2e53eb13f718eacd3263ab4535f9137fabffc9de499a0de7cabb335479 287.8 μs 284.4 μs -1.2%
semantics/383683bfcecdab0f4df507f59631c702bd11a81ca3841f47f37633e8aacbb5de 732.5 μs 722.6 μs -1.4%
semantics/33c3efd79d9234a78262b52bc6bbf8124cb321a467dedb278328215167eca455 604.6 μs 596.4 μs -1.4%
semantics/331e4a1bb30f28d7073c54f9a13c10ae19e2e396c299a0ce101ee6bf4b2020db 442.7 μs 439.7 μs -0.7%
semantics/322acde099bc34a929182d5b894214fc87ec88446e2d10625119a9d17fa3ec3d 292.0 μs 286.9 μs -1.7%
semantics/30aa34dfbe89e0c43f569929a96c0d2b74c321d13fec0375606325eee9a34a6a 1.098 ms 1.090 ms -0.7%
semantics/2f58c9d884813042bce9cf7c66048767dff166785e8b5183c8139db2aa7312d1 740.7 μs 729.6 μs -1.5%
semantics/2cb21612178a2d9336b59d06cbf80488577463d209a453048a66c6eee624a695 737.5 μs 729.3 μs -1.1%
semantics/28fdce478e179db0e38fb5f3f4105e940ece450b9ce8a0f42a6e313b752e6f2c 878.5 μs 856.3 μs -2.5%
semantics/2797d7ac77c1b6aff8e42cf9a47fa86b1e60f22719a996871ad412cbe4de78b5 1.777 ms 1.720 ms -3.2%
semantics/26e24ee631a6d927ea4fb4fac530cfd82ff7636986014de2d2aaa460ddde0bc3 541.0 μs 538.4 μs -0.5%
semantics/238b21364ab5bdae3ddb514d7001c8feba128b4ddcf426852b441f9a9d02c882 287.8 μs 284.7 μs -1.1%
semantics/21953bf8798b28df60cb459db24843fb46782b19ba72dc4951941fb4c20d2263 354.3 μs 350.4 μs -1.1%
semantics/202d273721330b31193405101e0637202e2a0f1140211c3e3f171e26312b0220 5.599 ms 5.531 ms -1.2%
semantics/1f0f02191604101e1f201016171604060d010d1d1c150e110a110e1006160a0d 988.2 μs 958.2 μs -3.0%
semantics/1d6e3c137149a440f35e0efc685b16bfb8052ebcf66ec4ad77e51c11501381c7 292.5 μs 287.5 μs -1.7%
semantics/1d56060c3b271226064c672a282663643b1b0823471c67737f0b076870331260 741.5 μs 727.9 μs -1.8%
semantics/1a573aed5c46d637919ccb5548dfc22a55c9fc38298d567d15ee9f2eea69d89e 872.6 μs 863.6 μs -1.0%
semantics/1a2f2540121f09321216090b2b1f211e3f020c2c133a1a3c3f3c232a26153a04 290.7 μs 287.2 μs -1.2%
semantics/18cefc240debc0fcab14efdd451adfd02793093efe7bc76d6322aed6ddb582ad 706.9 μs 700.9 μs -0.8%
semantics/12910f24d994d451ff379b12c9d1ecdb9239c9b87e5d7bea570087ec506935d5 471.7 μs 467.2 μs -1.0%
semantics/119fbea4164e2bf21d2b53aa6c2c4e79414fe55e4096f5ce2e804735a7fbaf91 708.6 μs 702.3 μs -0.9%
semantics/0f1d0110001b121d051e15140c0c05141d151c1f1d201c040f10091b020a0e1a 452.9 μs 448.8 μs -0.9%
semantics/0be82588e4e4bf2ef428d2f44b7687bbb703031d8de696d90ec789e70d6bc1d8 1.312 ms 1.297 ms -1.1%
semantics/0bcfd9487614104ec48de2ea0b2c0979866a95115748c026f9ec129384c262c4 1.061 ms 1.053 ms -0.8%
semantics/07070c070510030509010e050d00040907050e0a0d06030f1006030701020607 963.1 μs 957.5 μs -0.6%
semantics/0705030002040601010206030604080208020207000101060706050502040301 1.026 ms 1.005 ms -2.0%
semantics/0543a00ba1f63076c1db6bf94c6ff13ae7d266dd7544678743890b0e8e1add63 963.7 μs 944.5 μs -2.0%
semantics/04000f0b04051006000e060f09080d0b090d0104050a0b0f0506070f0a070008 706.3 μs 695.9 μs -1.5%
semantics/0104010200020000040103020102020004040300030304040400010301040303 730.4 μs 723.2 μs -1.0%
semantics/0101080808040600020306010000000302050807010208060100070207080202 741.5 μs 732.6 μs -1.2%
semantics/0101020201010201010200010102000201000201010102000102010201010000 288.7 μs 283.9 μs -1.7%
semantics/0101010001010101010101000100010100000001010000010001000001000101 885.2 μs 864.4 μs -2.3%
semantics/004025fd712d6c325ffa12c16d157064192992faf62e0b991d7310a2f91666b8 756.3 μs 749.1 μs -1.0%
semantics/0003040402030103010203030303000200000104030002040304020400000102 990.1 μs 982.6 μs -0.8%
semantics/0001000101000000010101000001000001010101010100000001000001010000 436.9 μs 429.6 μs -1.7%
semantics/0000020002010200020101020201000100010001020101020201010000020102 309.1 μs 304.5 μs -1.5%
role-payout/ff38b1ec89952d0247630f107a90cbbeb92ecbfcd19b284f60255718e4ec7548 179.7 μs 179.2 μs -0.3%
role-payout/fc8c5f45ffcdb024c21e0f34b22c23de8045a94d5e1a5bda1555c45ddb059f82 154.4 μs 153.6 μs -0.5%
role-payout/f7275afb60e33a550df13a132102e7e925dd28965a4efbe510a89b077ff9417f 148.9 μs 147.3 μs -1.1%
role-payout/f53e8cafe26647ccce51e4c31db13608aea1f39034c0f52dee2e5634ef66e747 164.0 μs 162.4 μs -1.0%
role-payout/f2932e4ca4bbb94b0a9ffbe95fcb7bd5639d9751d75d56d5e14efa5bbed981df 145.7 μs 143.8 μs -1.3%
role-payout/f1a1e6a487f91feca5606f72bbb1e948c71abf043c6a0ea83bfea9ec6a0f08d8 147.3 μs 146.4 μs -0.6%
role-payout/ee3962fbd7373360f46decef3c9bda536a0b1daf6cda3b8a4bcfd6deeb5b4c53 173.2 μs 170.6 μs -1.5%
role-payout/ec4712ee820eb959a43ebedfab6735f2325fa52994747526ffd2a4f4f84dd58e 170.3 μs 168.8 μs -0.9%
role-payout/eabeeae18131af89fa57936c0e9eb8d2c7adba534f7e1a517d75410028fa0d6c 148.3 μs 147.6 μs -0.5%
role-payout/df487b2fd5c1583fa33644423849bc1ab5f02f37edc0c235f34ef01cb12604f6 155.1 μs 154.0 μs -0.7%
role-payout/dc45c5f1b700b1334db99f50823321daaef0e6925b9b2fabbc9df7cde65af62e 153.3 μs 152.3 μs -0.7%
role-payout/da353bf9219801fa1bf703fc161497570954e9af7e10ffe95c911a9ef97e77bd 153.6 μs 153.2 μs -0.3%
role-payout/d6bc8ac4155e22300085784148bbc9d9bbfea896e1009dd396610a90e3943032 173.6 μs 172.0 μs -0.9%
role-payout/d5cda74eb0947e025e02fb8ed365df39d0a43e4b42cd3573ac2d8fcb29115997 165.1 μs 164.4 μs -0.4%
role-payout/cc1e82927f6c65b3e912200ae30588793d2066e1d4a6627c21955944ac9bd528 172.3 μs 168.9 μs -2.0%
role-payout/cb2ab8e22d1f64e8d204dece092e90e9bf1fa8b2a6e9cba5012dbe4978065832 148.4 μs 148.2 μs -0.1%
role-payout/caa409c40e39aed9b0f59214b4baa178c375526dea6026b4552b88d2cc729716 139.8 μs 138.4 μs -1.0%
role-payout/c99ecc2146ce2066ba6dffc734923264f8794815acbc2ec74c2c2c42ba272e4d 188.5 μs 188.2 μs -0.2%
role-payout/c78eeba7681d2ab51b4758efa4c812cc041928837c6e7563d8283cce67ce2e02 160.3 μs 159.4 μs -0.6%
role-payout/c4d4c88c5fe378a25a034025994a0d0b1642f10c8e6e513f872327fa895bfc7e 162.7 μs 160.4 μs -1.4%
role-payout/c11490431db3a92efdda70933ba411a0423935e73a75c856e326dbcf6672f3bf 148.5 μs 147.3 μs -0.8%
role-payout/bd79f4a84db23b7c4cd219d498bd581e085cbc3437957e74a8862281a700700b 171.7 μs 170.4 μs -0.8%
role-payout/bd460b7549b70c52e37b312a4242041eac18fe4a266f018bcea0c78a9085a271 173.2 μs 171.7 μs -0.9%
role-payout/bcdbc576d63b0454100ad06893812edafc2e7e4934fec1b44e2d06eb34f36eb8 149.0 μs 147.3 μs -1.1%
role-payout/b869f3928200061abb1c3060425b9354b0e08cbf4400b340b8707c14b34317cd 223.9 μs 222.4 μs -0.7%
role-payout/b6243a5b4c353ce4852aa41705111d57867d2783eeef76f6d59beb2360da6e90 206.4 μs 204.2 μs -1.1%
role-payout/b43564af5f13cc5208b92b1ad6d45369446f378d3891e5cb3e353b30d4f3fb10 148.2 μs 147.6 μs -0.4%
role-payout/af2e072b5adfaa7211e0b341e1f7319c4f4e7364a4247c9247132a927e914753 177.4 μs 175.8 μs -0.9%
role-payout/a92b4072cb8601fa697e1150c08463b14ffced54eb963df08d322216e27373cb 149.0 μs 147.3 μs -1.1%
role-payout/a7cb09f417c3f089619fe25b7624392026382b458486129efcff18f8912bf302 148.2 μs 146.7 μs -1.0%
role-payout/a6f064b83b31032ea7f25921364727224707268e472a569f584cc6b1d8c017e8 148.7 μs 146.8 μs -1.3%
role-payout/a6664a2d2a82f370a34a36a45234f6b33120a39372331678a3b3690312560ce9 188.3 μs 186.1 μs -1.2%
role-payout/a27524cfad019df45e4e8316f927346d4cc39da6bdd294fb2c33c3f58e6a8994 147.9 μs 146.1 μs -1.2%
role-payout/a1b25347409c3993feca1a60b6fcaf93d1d4bbaae19ab06fdf50cedc26cee68d 143.0 μs 141.5 μs -1.0%
role-payout/a0fba5740174b5cd24036c8b008cb1efde73f1edae097b9325c6117a0ff40d3b 166.9 μs 164.5 μs -1.4%
role-payout/a004a989c005d59043f996500e110fa756ad1b85800b889d5815a0106388e1d7 158.2 μs 157.0 μs -0.8%
role-payout/996804e90f2c75fe68886fc8511304b8ab9b36785f8858f5cb098e91c159dde9 152.6 μs 151.3 μs -0.9%
role-payout/962c2c658b19904372984a56409707401e64e9b03c1986647134cfd329ec5139 162.8 μs 159.9 μs -1.8%
role-payout/8c0fa5d9d6724c5c72c67e055d4bfc36a385ded7c3c81c08cdbd8705829af6e6 180.6 μs 179.4 μs -0.7%
role-payout/87167fc5469adac97c1be749326fa79a6b7862ce68aa4abcb438e3c034bd0899 180.9 μs 179.2 μs -0.9%
role-payout/803eae94d62e2afc0e835c204af8362170301bc329e2d849d5f5a47dddf479ec 172.3 μs 170.9 μs -0.8%
role-payout/7b1dd76edc27f00eb382bf996378155baf74d6a7c6f3d5ec837c39d29784aade 148.5 μs 147.1 μs -0.9%
role-payout/73f044f34a30f26639c58bafe952047f74c7bf1eafebab5aadf5b73cfb9024ed 147.7 μs 147.1 μs -0.4%
role-payout/6d66bddb4269bdf77392d3894da5341cf019d39787522af4f83f01285991e93c 148.4 μs 147.1 μs -0.9%
role-payout/6c364699767a84059ffd99cf718562a8c09d96e343f23dc481e8ffda13af424f 148.1 μs 146.4 μs -1.1%
role-payout/6b7bc2b9002a71b33cfd535d43f26334a283d0b9ad189b7cd74baac232c3b9fc 139.5 μs 138.5 μs -0.7%
role-payout/674b0577409957172ad85223c765d17e94c27714276c49c38dfae0a47a561a1e 143.7 μs 143.1 μs -0.4%
role-payout/6621a69217f09d91f42876a9c0cecf79de0e29bdd5b16c82c6c52cf959092ec4 165.8 μs 163.8 μs -1.2%
role-payout/622a7f3bc611b5149253c9189da022a9ff296f60a5b7c172a6dc286faa7284fa 181.3 μs 179.7 μs -0.9%
role-payout/5efe992e306e31cc857c64a62436ad2f9325acc5b4a74a8cebccdfd853ce63d2 153.5 μs 153.0 μs -0.3%
role-payout/5d4c62a0671c65a14f6a15093e3efc4f1816d95a5a58fd92486bedaae8d9526b 176.1 μs 173.4 μs -1.5%
role-payout/5ade103e9530dd0d572fe1b053ea65ad925c6ebbe321e873ace8b804363fa82c 212.9 μs 212.7 μs -0.1%
role-payout/5a2aae344e569a2c644dd9fa8c7b1f129850937eb562b7748c275f9e40bed596 146.9 μs 146.7 μs -0.1%
role-payout/5a0725d49c733130eda8bc6ed5234f7f6ff8c9dd2d201e8806125e5fbcc081f9 158.0 μs 156.5 μs -0.9%
role-payout/4fbcfdb577a56b842d6f6938187a783f71d9da7519353e3da3ef0c564e1eb344 186.2 μs 185.4 μs -0.4%
role-payout/4dd7755b6ca1f0c9747c1fc0ee4da799f6f1c07108e980bd9f820911ad711ff2 200.2 μs 199.0 μs -0.6%
role-payout/49b8275d0cb817be40865694ab05e3cfe5fc35fb43b78e7de68c1f3519b536bd 154.2 μs 153.3 μs -0.6%
role-payout/47364cfaf2c00f7d633283dce6cf84e4fd4e8228c0a0aa50e7c55f35c3ecaa1c 147.9 μs 146.4 μs -1.0%
role-payout/46f8d00030436e4da490a86b331fa6c3251425fb8c19556080e124d75bad7bd6 147.6 μs 146.2 μs -0.9%
role-payout/452e17d16222a427707fa83f63ffb79f606cc25c755a18b1e3274c964ed5ec99 181.4 μs 178.6 μs -1.5%
role-payout/4299c7fcf093a5dbfe114c188e32ca199b571a7c25cb7f766bf49f12dab308be 162.6 μs 160.9 μs -1.0%
role-payout/4121d88f14387d33ac5e1329618068e3848445cdd66b29e5ba382be2e02a174a 177.8 μs 176.0 μs -1.0%
role-payout/3897ef714bba3e6821495b706c75f8d64264c3fdaa58a3826c808b5a768c303d 151.1 μs 150.8 μs -0.2%
role-payout/371c10d2526fc0f09dbe9ed59e44dcd949270b27dc42035addd7ff9f7e0d05e7 179.6 μs 179.6 μs 0.0%
role-payout/36866914aa07cf62ef36cf2cd64c7f240e3371e27bb9fff5464301678e809c40 145.3 μs 143.5 μs -1.2%
role-payout/3569299fc986f5354d02e627a9eaa48ab46d5af52722307a0af72bae87e256dc 145.5 μs 143.6 μs -1.3%
role-payout/3565ee025317e065e8555eef288080276716366769aad89e03389f5ec4ce26d7 157.0 μs 156.2 μs -0.5%
role-payout/332c2b1c11383d1b373e1315201f1128010e0e1518332f273f141b23243f2a07 143.3 μs 143.1 μs -0.1%
role-payout/224ce46046fab9a17be4197622825f45cc0c59a6bd1604405148e43768c487ef 146.1 μs 145.4 μs -0.5%
role-payout/21a1426fb3fb3019d5dc93f210152e90b0a6e740ef509b1cdd423395f010e0ca 165.3 μs 163.5 μs -1.1%
role-payout/211e1b6c10260c4620074d2e372c260d38643a3d605f63772524034f0a4a7632 154.6 μs 153.3 μs -0.8%
role-payout/1a20b465d48a585ffd622bd8dc26a498a3c12f930ab4feab3a5064cfb3bc536a 163.3 μs 162.0 μs -0.8%
role-payout/195f522b596360690d04586a2563470f2214163435331a6622311f7323433f1c 144.0 μs 142.6 μs -1.0%
role-payout/159e5a1bf16fe984b5569be7011b61b5e98f5d2839ca7e1b34c7f2afc7ffb58e 148.5 μs 147.1 μs -0.9%
role-payout/121a0a1b12030616111f02121a0e070716090a0e031c071419121f141409031d 146.3 μs 146.2 μs -0.1%
role-payout/1138a04a83edc0579053f9ffa9394b41df38230121fbecebee8c039776a88c0c 146.1 μs 145.6 μs -0.3%
role-payout/0f010d040810040b10020e040f0e030b0a0d100f0c080c0c05000d04100c100f 172.6 μs 171.6 μs -0.6%
role-payout/0e97c9d9417354d9460f2eb35018d3904b7b035af16ab299258adab93be0911a 162.6 μs 161.0 μs -1.0%
role-payout/0e72f62b0f922e31a2340baccc768104025400cf7fdd7dae62fbba5fc770936d 167.7 μs 166.8 μs -0.5%
role-payout/0e00171d0f1e1f14070d0a00091f07101808021d081e1b120219081312081e15 148.9 μs 148.1 μs -0.5%
role-payout/0dbb692d2bf22d25eeceac461cfebf616f54003077a8473abc0457f18e025960 181.1 μs 180.1 μs -0.6%
role-payout/0d0f01050a0a0a0b0b050d0404090e0d0506000d0a041003040e0f100e0a0408 155.9 μs 155.1 μs -0.5%
role-payout/0c9d3634aeae7038f839a1262d1a8bc724dc77af9426459417a56ec73240f0e0 155.8 μs 154.1 μs -1.1%
role-payout/0bdca1cb8fa7e38e09062557b82490714052e84e2054e913092cd84ac071b961 174.3 μs 173.3 μs -0.6%
role-payout/07658a6c898ad6d624c37df1e49e909c2e9349ba7f4c0a6be5f166fe239bfcae 139.7 μs 138.5 μs -0.9%
role-payout/06317060a8e488b1219c9dae427f9ce27918a9e09ee8ac424afa33ca923f7954 156.7 μs 156.4 μs -0.2%
role-payout/057ebc80922f16a5f4bf13e985bf586b8cff37a2f6fe0f3ce842178c16981027 145.5 μs 144.0 μs -1.0%
role-payout/04f592afc6e57c633b9c55246e7c82e87258f04e2fb910c37d8e2417e9db46e5 210.3 μs 210.8 μs +0.2%
role-payout/041a2c3b111139201a3a2c173c392b170e16370d300f2d28342d0f2f0e182e01 178.3 μs 177.2 μs -0.6%
role-payout/0405010105020401010304080005050800040301010800080207080704020206 173.9 μs 172.6 μs -0.7%
role-payout/0403020000030204010000030001000202010101000304030001040404030100 157.4 μs 156.1 μs -0.8%
role-payout/03d730a62332c51c7b70c16c64da72dd1c3ea36c26b41cd1a1e00d39fda3d6cc 172.1 μs 170.5 μs -0.9%
role-payout/031d56d71454e2c4216ffaa275c4a8b3eb631109559d0e56f44ea8489f57ba97 183.4 μs 182.5 μs -0.5%
role-payout/0303020000020001010201060303040208070100050401080304020801030001 146.0 μs 144.5 μs -1.0%
role-payout/0202010002010100020102020102020001010101020102010001010101000100 148.9 μs 147.2 μs -1.1%
role-payout/0201020201020000020000010201020001020200000002010200000101010100 158.9 μs 156.8 μs -1.3%
role-payout/01dcc372ea619cb9f23c45b17b9a0a8a16b7ca0e04093ef8ecce291667a99a4c 142.0 μs 140.3 μs -1.2%
role-payout/0101000100000101010000010101000100010101000001000001000000010101 175.0 μs 173.8 μs -0.7%
role-payout/0100000100010000000001000100010101000101000001000000010000010000 236.3 μs 236.4 μs +0.0%
role-payout/0004000402010401030101030100040000010104020201030001000204020401 163.1 μs 162.1 μs -0.6%

@effectfully
Copy link
Contributor

/benchmark marlowe

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Mar 4, 2024

Comparing benchmark results of 'marlowe' on '1f9b73f94' (base) and '86bedde12' (PR)

Results table
Script 1f9b73f 86bedde Change
semantics/ffdd68a33afd86f8844c9f5e45b2bda5b035aa02274161b23d57709c0f8b8de6 910.5 μs 909.4 μs -0.1%
semantics/f339f59bdf92495ed2b14e2e4d3705972b4dda59aa929cffe0f1ff5355db8d79 4.553 ms 4.492 ms -1.3%
semantics/f2a8fd2014922f0d8e01541205d47e9bb2d4e54333bdd408cbe7c47c55e73ae4 695.0 μs 687.2 μs -1.1%
semantics/ecb5e8308b57724e0f8533921693f111eba942123cf8660aac2b5bac21ec28f0 633.1 μs 629.6 μs -0.6%
semantics/eb4a605ed3a64961e9e66ad9631c2813dadf7131740212762ae4483ec749fe1d 286.7 μs 284.1 μs -0.9%
semantics/e9234d2671760874f3f660aae5d3416d18ce6dfd7af4231bdd41b9ec268bc7e1 910.2 μs 901.5 μs -1.0%
semantics/e3afd22d01ff12f381cf915fd32358634e6c413f979f2492cf3339319d8cc079 292.3 μs 287.9 μs -1.5%
semantics/e34b48f80d49360e88c612f4016f7d68cb5678dd8cd5ddb981375a028b3a40a5 385.5 μs 383.0 μs -0.6%
semantics/e26c1cddba16e05fd10c34cbdb16ea6acdbac7c8323256c31c90c520ee6a1080 363.8 μs 360.4 μs -0.9%
semantics/dd11ae574eaeab0e9925319768989313a93913fdc347c704ddaa27042757d990 727.7 μs 723.1 μs -0.6%
semantics/dc241ac6ad1e04fb056d555d6a4f2d08a45d054c6f7f34355fcfeefebef479f3 446.1 μs 441.9 μs -0.9%
semantics/d64607eb8a1448595081547ea8780886fcbd9e06036460eea3705c88ea867e33 288.6 μs 284.6 μs -1.4%
semantics/d1c03759810747b7cab38c4296593b38567e11195d161b5bb0a2b58f89b2c65a 966.7 μs 960.1 μs -0.7%
semantics/d1ab832dfab25688f8845bec9387e46ee3f00ba5822197ade7dd540489ec5e95 37.96 ms 37.64 ms -0.8%
semantics/cf542b7df466b228ca2197c2aaa89238a8122f3330fe5b77b3222f570395d9f5 471.6 μs 468.9 μs -0.6%
semantics/ced1ea04649e093a501e43f8568ac3e6b37cd3eccec8cac9c70a4857b88a5eb8 808.3 μs 802.6 μs -0.7%
semantics/cdb9d5c233b288a5a9dcfbd8d5c1831a0bb46eec7a26fa31b80ae69d44805efc 845.3 μs 842.4 μs -0.3%
semantics/ccab11ce1a8774135d0e3c9e635631b68af9e276b5dabc66ff669d5650d0be1c 970.3 μs 974.6 μs +0.4%
semantics/c9efcb705ee057791f7c18a1de79c49f6e40ba143ce0579f1602fd780cabf153 780.7 μs 775.7 μs -0.6%
semantics/c4bb185380df6e9b66fc1ee0564f09a8d1253a51a0c0c7890f2214df9ac19274 700.7 μs 692.5 μs -1.2%
semantics/bb5345bfbbc460af84e784b900ec270df1948bb1d1e29eacecd022eeb168b315 922.3 μs 914.9 μs -0.8%
semantics/b50170cea48ee84b80558c02b15c6df52faf884e504d2c410ad63ba46d8ca35c 735.8 μs 728.2 μs -1.0%
semantics/b21a4df3b0266ad3481a26d3e3d848aad2fcde89510b29cccce81971e38e0835 1.289 ms 1.278 ms -0.9%
semantics/ad6db94ed69b7161c7604568f44358e1cc11e81fea90e41afebd669e51bb60c8 569.4 μs 565.7 μs -0.6%
semantics/acce04815e8fd51be93322888250060da173eccf3df3a605bd6bc6a456cde871 279.4 μs 274.7 μs -1.7%
semantics/acb9c83c2b78dabef8674319ad69ba54912cd9997bdf2d8b2998c6bfeef3b122 633.7 μs 629.9 μs -0.6%
semantics/a9a853b6d083551f4ed2995551af287880ef42aee239a2d9bc5314d127cce592 491.0 μs 484.6 μs -1.3%
semantics/a85173a832db3ea944fafc406dfe3fa3235254897d6d1d0e21bc380147687bd5 352.7 μs 350.2 μs -0.7%
semantics/9fabc4fc3440cdb776b28c9bb1dd49c9a5b1605fe1490aa3f4f64a3fa8881b25 965.4 μs 951.7 μs -1.4%
semantics/96e1a2fa3ceb9a402f2a5841a0b645f87b4e8e75beb636692478ec39f74ee221 290.0 μs 287.5 μs -0.9%
semantics/8d9ae67656a2911ab15a8e5301c960c69aa2517055197aff6b60a87ff718d66c 354.0 μs 350.7 μs -0.9%
semantics/8c7fdc3da6822b5112074380003524f50fb3a1ce6db4e501df1086773c6c0201 1.107 ms 1.096 ms -1.0%
semantics/82213dfdb6a812b40446438767c61a388d2c0cfd0cbf7fd4a372b0dc59fa17e1 1.202 ms 1.187 ms -1.2%
semantics/7cbc5644b745f4ea635aca42cce5e4a4b9d2e61afdb3ac18128e1688c07071ba 470.4 μs 467.5 μs -0.6%
semantics/7a758e17486d1a30462c32a5d5309bd1e98322a9dcbe277c143ed3aede9d265f 490.1 μs 485.5 μs -0.9%
semantics/75a8bb183688bce447e00f435a144c835435e40a5defc6f3b9be68b70b4a3db6 655.5 μs 650.7 μs -0.7%
semantics/7529b206a78becb793da74b78c04d9d33a2540a1abd79718e681228f4057403a 768.5 μs 762.7 μs -0.8%
semantics/74c67f2f182b9a0a66c62b95d6fac5ace3f7e71ea3abfc52ffbe3ecb93436ea2 766.9 μs 757.0 μs -1.3%
semantics/71965c9ccae31f1ffc1d85aa20a356d4ed97a420954018d8301ec4f9783be0d7 454.9 μs 450.8 μs -0.9%
semantics/70f65b21b77ddb451f3df9d9fb403ced3d10e1e953867cc4900cc25e5b9dec47 736.5 μs 732.4 μs -0.6%
semantics/6d88f7294dd2b5ce02c3dc609bc7715bd508009738401d264bf9b3eb7c6f49c1 472.4 μs 466.5 μs -1.2%
semantics/67ba5a9a0245ee3aff4f34852b9889b8c810fccd3dce2a23910bddd35c503b71 5.718 ms 5.678 ms -0.7%
semantics/675d63836cad11b547d1b4cddd498f04c919d4342612accf40913f9ae9419fac 983.4 μs 978.2 μs -0.5%
semantics/66af9e473d75e3f464971f6879cc0f2ef84bafcb38fbfa1dbc31ac2053628a38 1.264 ms 1.247 ms -1.3%
semantics/65bc4b69b46d18fdff0fadbf00dd5ec2b3e03805fac9d5fb4ff2d3066e53fc7e 2.295 ms 2.292 ms -0.1%
semantics/64c3d5b43f005855ffc4d0950a02fd159aa1575294ea39061b81a194ebb9eaae 641.4 μs 636.5 μs -0.8%
semantics/5f3d46c57a56cef6764f96c9de9677ac6e494dd7a4e368d1c8dd9c1f7a4309a5 469.9 μs 466.0 μs -0.8%
semantics/5f306b4b24ff2b39dab6cdc9ac6ca9bb442c1dc6f4e7e412eeb5a3ced42fb642 730.4 μs 723.8 μs -0.9%
semantics/5f130d19918807b60eab4c03119d67878fb6c6712c28c54f5a25792049294acc 291.0 μs 288.3 μs -0.9%
semantics/5e2c68ac9f62580d626636679679b97109109df7ac1a8ce86d3e43dfb5e4f6bc 496.2 μs 491.2 μs -1.0%
semantics/5e274e0f593511543d41570a4b03646c1d7539062b5728182e073e5760561a66 955.7 μs 947.8 μs -0.8%
semantics/5d0a88250f13c49c20e146819357a808911c878a0e0a7d6f7fe1d4a619e06112 988.7 μs 979.3 μs -1.0%
semantics/5abae75af26f45658beccbe48f7c88e74efdfc0b8409ba1e98f95fa5b6caf999 468.3 μs 464.4 μs -0.8%
semantics/57728d8b19b0e06412786f3dfed9e1894cd0ad1d2bc2bd497ec0ecb68f989d2b 289.1 μs 284.8 μs -1.5%
semantics/56333d4e413dbf1a665463bf68067f63c118f38f7539b7ba7167d577c0c8b8ce 746.7 μs 738.0 μs -1.2%
semantics/55dfe42688ad683b638df1fa7700219f00f53b335a85a2825502ab1e0687197e 288.1 μs 284.4 μs -1.3%
semantics/53ed4db7ab33d6f907eec91a861d1188269be5ae1892d07ee71161bfb55a7cb7 352.9 μs 350.0 μs -0.8%
semantics/52df7c8dfaa5f801cd837faa65f2fd333665fff00a555ce8c55e36ddc003007a 346.9 μs 343.7 μs -0.9%
semantics/4f9e8d361b85e62db2350dd3ae77463540e7af0d28e1eb68faeecc45f4655f57 391.7 μs 389.8 μs -0.5%
semantics/4d7adf91bfc93cebe95a7e054ec17cfbb912b32bd8aecb48a228b50e02b055c8 658.6 μs 653.4 μs -0.8%
semantics/4c3efd13b6c69112a8a888372d56c86e60c232125976f29b1c3e21d9f537845c 971.7 μs 964.0 μs -0.8%
semantics/44a9e339fa25948b48637fe7e10dcfc6d1256319a7b5ce4202cb54dfef8e37e7 288.3 μs 284.8 μs -1.2%
semantics/3db496e6cd39a8b888a89d0de07dace4397878958cab3b9d9353978b08c36d8a 776.4 μs 770.0 μs -0.8%
semantics/3bb75b2e53eb13f718eacd3263ab4535f9137fabffc9de499a0de7cabb335479 289.2 μs 284.8 μs -1.5%
semantics/383683bfcecdab0f4df507f59631c702bd11a81ca3841f47f37633e8aacbb5de 732.3 μs 726.9 μs -0.7%
semantics/33c3efd79d9234a78262b52bc6bbf8124cb321a467dedb278328215167eca455 603.7 μs 599.3 μs -0.7%
semantics/331e4a1bb30f28d7073c54f9a13c10ae19e2e396c299a0ce101ee6bf4b2020db 443.0 μs 440.9 μs -0.5%
semantics/322acde099bc34a929182d5b894214fc87ec88446e2d10625119a9d17fa3ec3d 291.2 μs 288.2 μs -1.0%
semantics/30aa34dfbe89e0c43f569929a96c0d2b74c321d13fec0375606325eee9a34a6a 1.100 ms 1.092 ms -0.7%
semantics/2f58c9d884813042bce9cf7c66048767dff166785e8b5183c8139db2aa7312d1 739.8 μs 734.9 μs -0.7%
semantics/2cb21612178a2d9336b59d06cbf80488577463d209a453048a66c6eee624a695 737.3 μs 743.0 μs +0.8%
semantics/28fdce478e179db0e38fb5f3f4105e940ece450b9ce8a0f42a6e313b752e6f2c 875.6 μs 868.2 μs -0.8%
semantics/2797d7ac77c1b6aff8e42cf9a47fa86b1e60f22719a996871ad412cbe4de78b5 1.782 ms 1.778 ms -0.2%
semantics/26e24ee631a6d927ea4fb4fac530cfd82ff7636986014de2d2aaa460ddde0bc3 543.5 μs 539.8 μs -0.7%
semantics/238b21364ab5bdae3ddb514d7001c8feba128b4ddcf426852b441f9a9d02c882 287.9 μs 285.2 μs -0.9%
semantics/21953bf8798b28df60cb459db24843fb46782b19ba72dc4951941fb4c20d2263 353.0 μs 351.8 μs -0.3%
semantics/202d273721330b31193405101e0637202e2a0f1140211c3e3f171e26312b0220 5.620 ms 5.623 ms +0.1%
semantics/1f0f02191604101e1f201016171604060d010d1d1c150e110a110e1006160a0d 989.2 μs 984.8 μs -0.4%
semantics/1d6e3c137149a440f35e0efc685b16bfb8052ebcf66ec4ad77e51c11501381c7 291.5 μs 288.6 μs -1.0%
semantics/1d56060c3b271226064c672a282663643b1b0823471c67737f0b076870331260 737.4 μs 735.1 μs -0.3%
semantics/1a573aed5c46d637919ccb5548dfc22a55c9fc38298d567d15ee9f2eea69d89e 872.6 μs 865.8 μs -0.8%
semantics/1a2f2540121f09321216090b2b1f211e3f020c2c133a1a3c3f3c232a26153a04 291.9 μs 288.0 μs -1.3%
semantics/18cefc240debc0fcab14efdd451adfd02793093efe7bc76d6322aed6ddb582ad 708.4 μs 703.7 μs -0.7%
semantics/12910f24d994d451ff379b12c9d1ecdb9239c9b87e5d7bea570087ec506935d5 473.3 μs 468.8 μs -1.0%
semantics/119fbea4164e2bf21d2b53aa6c2c4e79414fe55e4096f5ce2e804735a7fbaf91 710.4 μs 705.1 μs -0.7%
semantics/0f1d0110001b121d051e15140c0c05141d151c1f1d201c040f10091b020a0e1a 454.2 μs 450.2 μs -0.9%
semantics/0be82588e4e4bf2ef428d2f44b7687bbb703031d8de696d90ec789e70d6bc1d8 1.310 ms 1.303 ms -0.5%
semantics/0bcfd9487614104ec48de2ea0b2c0979866a95115748c026f9ec129384c262c4 1.065 ms 1.056 ms -0.8%
semantics/07070c070510030509010e050d00040907050e0a0d06030f1006030701020607 964.0 μs 959.9 μs -0.4%
semantics/0705030002040601010206030604080208020207000101060706050502040301 1.027 ms 1.012 ms -1.5%
semantics/0543a00ba1f63076c1db6bf94c6ff13ae7d266dd7544678743890b0e8e1add63 960.0 μs 950.3 μs -1.0%
semantics/04000f0b04051006000e060f09080d0b090d0104050a0b0f0506070f0a070008 705.0 μs 700.4 μs -0.7%
semantics/0104010200020000040103020102020004040300030304040400010301040303 732.1 μs 725.4 μs -0.9%
semantics/0101080808040600020306010000000302050807010208060100070207080202 741.4 μs 737.8 μs -0.5%
semantics/0101020201010201010200010102000201000201010102000102010201010000 288.0 μs 285.1 μs -1.0%
semantics/0101010001010101010101000100010100000001010000010001000001000101 883.8 μs 879.1 μs -0.5%
semantics/004025fd712d6c325ffa12c16d157064192992faf62e0b991d7310a2f91666b8 759.0 μs 753.9 μs -0.7%
semantics/0003040402030103010203030303000200000104030002040304020400000102 993.0 μs 984.0 μs -0.9%
semantics/0001000101000000010101000001000001010101010100000001000001010000 435.8 μs 434.0 μs -0.4%
semantics/0000020002010200020101020201000100010001020101020201010000020102 309.0 μs 306.3 μs -0.9%
role-payout/ff38b1ec89952d0247630f107a90cbbeb92ecbfcd19b284f60255718e4ec7548 179.5 μs 178.0 μs -0.8%
role-payout/fc8c5f45ffcdb024c21e0f34b22c23de8045a94d5e1a5bda1555c45ddb059f82 154.9 μs 153.1 μs -1.2%
role-payout/f7275afb60e33a550df13a132102e7e925dd28965a4efbe510a89b077ff9417f 149.0 μs 147.7 μs -0.9%
role-payout/f53e8cafe26647ccce51e4c31db13608aea1f39034c0f52dee2e5634ef66e747 163.7 μs 162.6 μs -0.7%
role-payout/f2932e4ca4bbb94b0a9ffbe95fcb7bd5639d9751d75d56d5e14efa5bbed981df 146.2 μs 144.5 μs -1.2%
role-payout/f1a1e6a487f91feca5606f72bbb1e948c71abf043c6a0ea83bfea9ec6a0f08d8 147.8 μs 146.9 μs -0.6%
role-payout/ee3962fbd7373360f46decef3c9bda536a0b1daf6cda3b8a4bcfd6deeb5b4c53 172.9 μs 170.3 μs -1.5%
role-payout/ec4712ee820eb959a43ebedfab6735f2325fa52994747526ffd2a4f4f84dd58e 170.0 μs 168.5 μs -0.9%
role-payout/eabeeae18131af89fa57936c0e9eb8d2c7adba534f7e1a517d75410028fa0d6c 148.8 μs 147.5 μs -0.9%
role-payout/df487b2fd5c1583fa33644423849bc1ab5f02f37edc0c235f34ef01cb12604f6 154.8 μs 153.3 μs -1.0%
role-payout/dc45c5f1b700b1334db99f50823321daaef0e6925b9b2fabbc9df7cde65af62e 153.5 μs 151.4 μs -1.4%
role-payout/da353bf9219801fa1bf703fc161497570954e9af7e10ffe95c911a9ef97e77bd 153.9 μs 152.0 μs -1.2%
role-payout/d6bc8ac4155e22300085784148bbc9d9bbfea896e1009dd396610a90e3943032 173.1 μs 170.8 μs -1.3%
role-payout/d5cda74eb0947e025e02fb8ed365df39d0a43e4b42cd3573ac2d8fcb29115997 164.3 μs 163.4 μs -0.5%
role-payout/cc1e82927f6c65b3e912200ae30588793d2066e1d4a6627c21955944ac9bd528 170.4 μs 169.2 μs -0.7%
role-payout/cb2ab8e22d1f64e8d204dece092e90e9bf1fa8b2a6e9cba5012dbe4978065832 148.1 μs 147.8 μs -0.2%
role-payout/caa409c40e39aed9b0f59214b4baa178c375526dea6026b4552b88d2cc729716 139.1 μs 138.3 μs -0.6%
role-payout/c99ecc2146ce2066ba6dffc734923264f8794815acbc2ec74c2c2c42ba272e4d 188.1 μs 187.7 μs -0.2%
role-payout/c78eeba7681d2ab51b4758efa4c812cc041928837c6e7563d8283cce67ce2e02 159.9 μs 158.8 μs -0.7%
role-payout/c4d4c88c5fe378a25a034025994a0d0b1642f10c8e6e513f872327fa895bfc7e 161.7 μs 160.3 μs -0.9%
role-payout/c11490431db3a92efdda70933ba411a0423935e73a75c856e326dbcf6672f3bf 148.2 μs 147.1 μs -0.7%
role-payout/bd79f4a84db23b7c4cd219d498bd581e085cbc3437957e74a8862281a700700b 172.5 μs 170.7 μs -1.0%
role-payout/bd460b7549b70c52e37b312a4242041eac18fe4a266f018bcea0c78a9085a271 172.8 μs 171.2 μs -0.9%
role-payout/bcdbc576d63b0454100ad06893812edafc2e7e4934fec1b44e2d06eb34f36eb8 147.8 μs 147.7 μs -0.1%
role-payout/b869f3928200061abb1c3060425b9354b0e08cbf4400b340b8707c14b34317cd 222.9 μs 222.4 μs -0.2%
role-payout/b6243a5b4c353ce4852aa41705111d57867d2783eeef76f6d59beb2360da6e90 206.4 μs 203.9 μs -1.2%
role-payout/b43564af5f13cc5208b92b1ad6d45369446f378d3891e5cb3e353b30d4f3fb10 148.6 μs 147.4 μs -0.8%
role-payout/af2e072b5adfaa7211e0b341e1f7319c4f4e7364a4247c9247132a927e914753 176.2 μs 175.4 μs -0.5%
role-payout/a92b4072cb8601fa697e1150c08463b14ffced54eb963df08d322216e27373cb 148.8 μs 148.0 μs -0.5%
role-payout/a7cb09f417c3f089619fe25b7624392026382b458486129efcff18f8912bf302 147.4 μs 146.9 μs -0.3%
role-payout/a6f064b83b31032ea7f25921364727224707268e472a569f584cc6b1d8c017e8 148.6 μs 147.6 μs -0.7%
role-payout/a6664a2d2a82f370a34a36a45234f6b33120a39372331678a3b3690312560ce9 188.1 μs 186.5 μs -0.9%
role-payout/a27524cfad019df45e4e8316f927346d4cc39da6bdd294fb2c33c3f58e6a8994 148.0 μs 146.9 μs -0.7%
role-payout/a1b25347409c3993feca1a60b6fcaf93d1d4bbaae19ab06fdf50cedc26cee68d 142.3 μs 141.3 μs -0.7%
role-payout/a0fba5740174b5cd24036c8b008cb1efde73f1edae097b9325c6117a0ff40d3b 166.8 μs 165.6 μs -0.7%
role-payout/a004a989c005d59043f996500e110fa756ad1b85800b889d5815a0106388e1d7 157.6 μs 156.4 μs -0.8%
role-payout/996804e90f2c75fe68886fc8511304b8ab9b36785f8858f5cb098e91c159dde9 152.6 μs 151.7 μs -0.6%
role-payout/962c2c658b19904372984a56409707401e64e9b03c1986647134cfd329ec5139 163.1 μs 161.4 μs -1.0%
role-payout/8c0fa5d9d6724c5c72c67e055d4bfc36a385ded7c3c81c08cdbd8705829af6e6 179.8 μs 178.3 μs -0.8%
role-payout/87167fc5469adac97c1be749326fa79a6b7862ce68aa4abcb438e3c034bd0899 181.0 μs 179.9 μs -0.6%
role-payout/803eae94d62e2afc0e835c204af8362170301bc329e2d849d5f5a47dddf479ec 171.2 μs 170.1 μs -0.6%
role-payout/7b1dd76edc27f00eb382bf996378155baf74d6a7c6f3d5ec837c39d29784aade 148.0 μs 147.4 μs -0.4%
role-payout/73f044f34a30f26639c58bafe952047f74c7bf1eafebab5aadf5b73cfb9024ed 147.6 μs 147.3 μs -0.2%
role-payout/6d66bddb4269bdf77392d3894da5341cf019d39787522af4f83f01285991e93c 148.2 μs 147.5 μs -0.5%
role-payout/6c364699767a84059ffd99cf718562a8c09d96e343f23dc481e8ffda13af424f 147.9 μs 147.0 μs -0.6%
role-payout/6b7bc2b9002a71b33cfd535d43f26334a283d0b9ad189b7cd74baac232c3b9fc 139.9 μs 138.7 μs -0.9%
role-payout/674b0577409957172ad85223c765d17e94c27714276c49c38dfae0a47a561a1e 143.2 μs 143.1 μs -0.1%
role-payout/6621a69217f09d91f42876a9c0cecf79de0e29bdd5b16c82c6c52cf959092ec4 165.4 μs 164.1 μs -0.8%
role-payout/622a7f3bc611b5149253c9189da022a9ff296f60a5b7c172a6dc286faa7284fa 181.0 μs 180.1 μs -0.5%
role-payout/5efe992e306e31cc857c64a62436ad2f9325acc5b4a74a8cebccdfd853ce63d2 153.2 μs 152.5 μs -0.5%
role-payout/5d4c62a0671c65a14f6a15093e3efc4f1816d95a5a58fd92486bedaae8d9526b 175.7 μs 173.2 μs -1.4%
role-payout/5ade103e9530dd0d572fe1b053ea65ad925c6ebbe321e873ace8b804363fa82c 212.6 μs 212.3 μs -0.1%
role-payout/5a2aae344e569a2c644dd9fa8c7b1f129850937eb562b7748c275f9e40bed596 147.4 μs 146.5 μs -0.6%
role-payout/5a0725d49c733130eda8bc6ed5234f7f6ff8c9dd2d201e8806125e5fbcc081f9 157.5 μs 157.2 μs -0.2%
role-payout/4fbcfdb577a56b842d6f6938187a783f71d9da7519353e3da3ef0c564e1eb344 186.2 μs 185.6 μs -0.3%
role-payout/4dd7755b6ca1f0c9747c1fc0ee4da799f6f1c07108e980bd9f820911ad711ff2 200.3 μs 199.7 μs -0.3%
role-payout/49b8275d0cb817be40865694ab05e3cfe5fc35fb43b78e7de68c1f3519b536bd 153.9 μs 152.1 μs -1.2%
role-payout/47364cfaf2c00f7d633283dce6cf84e4fd4e8228c0a0aa50e7c55f35c3ecaa1c 147.4 μs 147.1 μs -0.2%
role-payout/46f8d00030436e4da490a86b331fa6c3251425fb8c19556080e124d75bad7bd6 147.4 μs 147.3 μs -0.1%
role-payout/452e17d16222a427707fa83f63ffb79f606cc25c755a18b1e3274c964ed5ec99 181.3 μs 178.5 μs -1.5%
role-payout/4299c7fcf093a5dbfe114c188e32ca199b571a7c25cb7f766bf49f12dab308be 162.1 μs 161.5 μs -0.4%
role-payout/4121d88f14387d33ac5e1329618068e3848445cdd66b29e5ba382be2e02a174a 176.7 μs 175.5 μs -0.7%
role-payout/3897ef714bba3e6821495b706c75f8d64264c3fdaa58a3826c808b5a768c303d 151.5 μs 149.8 μs -1.1%
role-payout/371c10d2526fc0f09dbe9ed59e44dcd949270b27dc42035addd7ff9f7e0d05e7 180.1 μs 178.2 μs -1.1%
role-payout/36866914aa07cf62ef36cf2cd64c7f240e3371e27bb9fff5464301678e809c40 145.5 μs 144.0 μs -1.0%
role-payout/3569299fc986f5354d02e627a9eaa48ab46d5af52722307a0af72bae87e256dc 145.9 μs 144.5 μs -1.0%
role-payout/3565ee025317e065e8555eef288080276716366769aad89e03389f5ec4ce26d7 157.7 μs 156.8 μs -0.6%
role-payout/332c2b1c11383d1b373e1315201f1128010e0e1518332f273f141b23243f2a07 142.9 μs 142.5 μs -0.3%
role-payout/224ce46046fab9a17be4197622825f45cc0c59a6bd1604405148e43768c487ef 145.2 μs 145.3 μs +0.1%
role-payout/21a1426fb3fb3019d5dc93f210152e90b0a6e740ef509b1cdd423395f010e0ca 165.3 μs 164.4 μs -0.5%
role-payout/211e1b6c10260c4620074d2e372c260d38643a3d605f63772524034f0a4a7632 154.3 μs 153.2 μs -0.7%
role-payout/1a20b465d48a585ffd622bd8dc26a498a3c12f930ab4feab3a5064cfb3bc536a 163.2 μs 161.7 μs -0.9%
role-payout/195f522b596360690d04586a2563470f2214163435331a6622311f7323433f1c 144.1 μs 143.0 μs -0.8%
role-payout/159e5a1bf16fe984b5569be7011b61b5e98f5d2839ca7e1b34c7f2afc7ffb58e 147.8 μs 148.2 μs +0.3%
role-payout/121a0a1b12030616111f02121a0e070716090a0e031c071419121f141409031d 146.3 μs 145.6 μs -0.5%
role-payout/1138a04a83edc0579053f9ffa9394b41df38230121fbecebee8c039776a88c0c 145.9 μs 145.4 μs -0.3%
role-payout/0f010d040810040b10020e040f0e030b0a0d100f0c080c0c05000d04100c100f 172.1 μs 171.6 μs -0.3%
role-payout/0e97c9d9417354d9460f2eb35018d3904b7b035af16ab299258adab93be0911a 161.8 μs 160.7 μs -0.7%
role-payout/0e72f62b0f922e31a2340baccc768104025400cf7fdd7dae62fbba5fc770936d 167.0 μs 165.7 μs -0.8%
role-payout/0e00171d0f1e1f14070d0a00091f07101808021d081e1b120219081312081e15 149.5 μs 148.2 μs -0.9%
role-payout/0dbb692d2bf22d25eeceac461cfebf616f54003077a8473abc0457f18e025960 180.9 μs 180.0 μs -0.5%
role-payout/0d0f01050a0a0a0b0b050d0404090e0d0506000d0a041003040e0f100e0a0408 156.4 μs 154.4 μs -1.3%
role-payout/0c9d3634aeae7038f839a1262d1a8bc724dc77af9426459417a56ec73240f0e0 154.8 μs 154.4 μs -0.3%
role-payout/0bdca1cb8fa7e38e09062557b82490714052e84e2054e913092cd84ac071b961 175.0 μs 174.1 μs -0.5%
role-payout/07658a6c898ad6d624c37df1e49e909c2e9349ba7f4c0a6be5f166fe239bfcae 139.7 μs 138.4 μs -0.9%
role-payout/06317060a8e488b1219c9dae427f9ce27918a9e09ee8ac424afa33ca923f7954 156.7 μs 155.9 μs -0.5%
role-payout/057ebc80922f16a5f4bf13e985bf586b8cff37a2f6fe0f3ce842178c16981027 145.7 μs 144.2 μs -1.0%
role-payout/04f592afc6e57c633b9c55246e7c82e87258f04e2fb910c37d8e2417e9db46e5 211.1 μs 209.7 μs -0.7%
role-payout/041a2c3b111139201a3a2c173c392b170e16370d300f2d28342d0f2f0e182e01 178.4 μs 176.6 μs -1.0%
role-payout/0405010105020401010304080005050800040301010800080207080704020206 174.0 μs 172.7 μs -0.7%
role-payout/0403020000030204010000030001000202010101000304030001040404030100 157.0 μs 156.2 μs -0.5%
role-payout/03d730a62332c51c7b70c16c64da72dd1c3ea36c26b41cd1a1e00d39fda3d6cc 171.6 μs 170.1 μs -0.9%
role-payout/031d56d71454e2c4216ffaa275c4a8b3eb631109559d0e56f44ea8489f57ba97 183.4 μs 182.3 μs -0.6%
role-payout/0303020000020001010201060303040208070100050401080304020801030001 145.9 μs 145.1 μs -0.5%
role-payout/0202010002010100020102020102020001010101020102010001010101000100 148.4 μs 147.2 μs -0.8%
role-payout/0201020201020000020000010201020001020200000002010200000101010100 158.7 μs 157.3 μs -0.9%
role-payout/01dcc372ea619cb9f23c45b17b9a0a8a16b7ca0e04093ef8ecce291667a99a4c 141.8 μs 140.8 μs -0.7%
role-payout/0101000100000101010000010101000100010101000001000001000000010101 175.1 μs 173.7 μs -0.8%
role-payout/0100000100010000000001000100010101000101000001000000010000010000 236.6 μs 235.4 μs -0.5%
role-payout/0004000402010401030101030100040000010104020201030001000204020401 162.0 μs 161.1 μs -0.6%

@effectfully
Copy link
Contributor

@michaelpj I don't think we need vectors in VConstr (as opposed to FrameCases), but removing them doesn't help performance according to the number above.

@effectfully effectfully mentioned this pull request Mar 4, 2024
@michaelpj
Copy link
Contributor Author

I don't think we need vectors in VConstr (as opposed to FrameCases)

Yes, you're right, I was just being overly zealous there.

@michaelpj
Copy link
Contributor Author

We also don't need them in Constr. But I don't think it costs us much, we still have O(1) performance on V.uncons.

@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:nofib

Copy link
Contributor

github-actions bot commented Apr 2, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Apr 2, 2024

Comparing benchmark results of 'plutus-benchmark:nofib' on 'cb91fa6fb' (base) and '6b5773645' (PR)

Results table
Script cb91fa6 6b57736 Change
clausify/formula1 3.807 ms 2.827 ms -25.7%
clausify/formula2 5.018 ms 3.749 ms -25.3%
clausify/formula3 13.64 ms 10.13 ms -25.7%
clausify/formula4 28.36 ms 22.58 ms -20.4%
clausify/formula5 66.02 ms 48.98 ms -25.8%
knights/4x4 17.98 ms 15.31 ms -14.8%
knights/6x6 47.25 ms 39.44 ms -16.5%
knights/8x8 83.01 ms 68.67 ms -17.3%
primetest/05digits 8.975 ms 8.761 ms -2.4%
primetest/08digits 14.35 ms 14.11 ms -1.7%
primetest/10digits 17.18 ms 16.90 ms -1.6%
primetest/20digits 34.57 ms 33.76 ms -2.3%
primetest/30digits 53.02 ms 52.10 ms -1.7%
primetest/40digits 71.44 ms 70.76 ms -1.0%
primetest/50digits 87.36 ms 85.72 ms -1.9%
queens4x4/bt 5.559 ms 4.810 ms -13.5%
queens4x4/bm 7.277 ms 6.337 ms -12.9%
queens4x4/bjbt1 6.882 ms 5.979 ms -13.1%
queens4x4/bjbt2 6.406 ms 5.560 ms -13.2%
queens4x4/fc 15.00 ms 12.96 ms -13.6%
queens5x5/bt 74.50 ms 64.35 ms -13.6%
queens5x5/bm 81.19 ms 70.95 ms -12.6%
queens5x5/bjbt1 88.00 ms 76.09 ms -13.5%
queens5x5/bjbt2 84.55 ms 73.53 ms -13.0%
queens5x5/fc 189.1 ms 163.5 ms -13.5%
TOTAL 1.110 s 977.9 ms -11.9%

@michaelpj
Copy link
Contributor Author

Still looks a bit better.

@michaelpj michaelpj marked this pull request as ready for review April 2, 2024 16:04
-- s , case _ (C0 ... CN, ρ) ◅ constr i V1 .. Vm ↦ s , [_ V1 ... Vm] ; ρ ▻ Ci
returnCek (FrameCases env cs ctx) e = case e of
(VConstr i args) -> case cs ^? wix i of
-- TODO: handle word/int conversion better
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also unsure what to do here. Check if the Integer is in range, otherwise assume it's a miss?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's probably fine, because you're only going to get a negative integer if an overflow occurs and that will be caught by (V.?!), but this really does need some extensive manual testing.

You could also do what I did in the SmallArray PR:

        VConstr i args
            | i < unsafeCoerce (sizeofSmallArray cs) ->
                computeCek (transferArgStack args ctx) env . indexSmallArray cs $ unsafeCoerce i

where indexSmallArray is unsafe lookup and sizeofSmallArray stupidly returns the length of the array rather than its byte size (man it pisses me off that they literally gave up on the usual camelCasing and stole the name of a C primitive just to assign it a completely different meaning). The logic here is

  • we know that the length of the array is a non-negative Int, so it's safe to unsafeCoerce it to a Word64
  • once we know that i is within the array bounds, it's safe to unsafeCoerce it to an Int, unless the array is somehow larger than fromIntegral (maxBound :: Int) :: Word64, which isn't something we could deserialize

Please note that I absolutely do not propose to have unsafeCoerce in there, just explaining the reasoning. Replacing both with fromIntegral should do the job just fine.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's probably fine, because you're only going to get a negative integer if an overflow occurs and that will be caught by (V.?!), but this really does need some extensive manual testing.

Yeah no, you can still wrap around to positive again.

I'll add some kind of bounds check.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, so it can in fact never trigger, because i is a Word64 and the largest Word64 wraps to only -1 as an Int64, so can't produce an "apparently good" value. I've left the check in out of caution.

I wanted to write a conformance test for this, but I was blocked by the fact that the parser doesn't do range checks, so in fact already wraps a "too large" number around problematically 😂 but that's a parser bug.

Copy link
Contributor

@effectfully effectfully left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's beyond my understanding how this can be faster than SmallArray.

-- s , case _ (C0 ... CN, ρ) ◅ constr i V1 .. Vm ↦ s , [_ V1 ... Vm] ; ρ ▻ Ci
returnCek (FrameCases env cs ctx) e = case e of
(VConstr i args) -> case cs ^? wix i of
-- TODO: handle word/int conversion better
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's probably fine, because you're only going to get a negative integer if an overflow occurs and that will be caught by (V.?!), but this really does need some extensive manual testing.

You could also do what I did in the SmallArray PR:

        VConstr i args
            | i < unsafeCoerce (sizeofSmallArray cs) ->
                computeCek (transferArgStack args ctx) env . indexSmallArray cs $ unsafeCoerce i

where indexSmallArray is unsafe lookup and sizeofSmallArray stupidly returns the length of the array rather than its byte size (man it pisses me off that they literally gave up on the usual camelCasing and stole the name of a C primitive just to assign it a completely different meaning). The logic here is

  • we know that the length of the array is a non-negative Int, so it's safe to unsafeCoerce it to a Word64
  • once we know that i is within the array bounds, it's safe to unsafeCoerce it to an Int, unless the array is somehow larger than fromIntegral (maxBound :: Int) :: Word64, which isn't something we could deserialize

Please note that I absolutely do not propose to have unsafeCoerce in there, just explaining the reasoning. Replacing both with fromIntegral should do the job just fine.

@effectfully
Copy link
Contributor

It's beyond my understanding how this can be faster than SmallArray.

Hm, maybe I should try Array-based solution then. Maybe something's wrong with SmallArray. Anyway, feel free to merge this one. Still don't like Vector in Constr though.

@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:nofib

Copy link
Contributor

github-actions bot commented Apr 8, 2024

Click here to check the status of your benchmark.

@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:nofib

Copy link
Contributor

github-actions bot commented Apr 9, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Apr 9, 2024

Comparing benchmark results of 'plutus-benchmark:nofib' on '191103257' (base) and '4b5d6c15a' (PR)

Results table
Script 1911032 4b5d6c1 Change
clausify/formula1 3.910 ms 2.991 ms -23.5%
clausify/formula2 5.147 ms 3.991 ms -22.5%
clausify/formula3 13.99 ms 10.91 ms -22.0%
clausify/formula4 29.27 ms 25.01 ms -14.6%
clausify/formula5 67.61 ms 52.64 ms -22.1%
knights/4x4 19.00 ms 17.42 ms -8.3%
knights/6x6 49.85 ms 44.95 ms -9.8%
knights/8x8 87.42 ms 78.38 ms -10.3%
primetest/05digits 10.58 ms 10.74 ms +1.5%
primetest/08digits 16.47 ms 17.36 ms +5.4%
primetest/10digits 20.50 ms 20.77 ms +1.3%
primetest/20digits 39.43 ms 41.06 ms +4.1%
primetest/30digits 62.50 ms 62.90 ms +0.6%
primetest/40digits 81.59 ms 84.90 ms +4.1%
primetest/50digits 99.56 ms 103.4 ms +3.9%
queens4x4/bt 5.858 ms 5.368 ms -8.4%
queens4x4/bm 7.603 ms 6.891 ms -9.4%
queens4x4/bjbt1 7.180 ms 6.554 ms -8.7%
queens4x4/bjbt2 6.684 ms 6.128 ms -8.3%
queens4x4/fc 15.58 ms 13.91 ms -10.7%
queens5x5/bt 78.35 ms 72.65 ms -7.3%
queens5x5/bm 84.76 ms 77.17 ms -9.0%
queens5x5/bjbt1 92.17 ms 84.68 ms -8.1%
queens5x5/bjbt2 89.10 ms 82.15 ms -7.8%
queens5x5/fc 196.8 ms 175.9 ms -10.6%
TOTAL 1.191 s 1.109 s -6.9%

@michaelpj
Copy link
Contributor Author

I'm unsure if that's a real result or if the changes to Constr actually did help!

@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:nofib

1 similar comment
@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:nofib

Copy link
Contributor

Click here to check the status of your benchmark.

Copy link
Contributor

Click here to check the status of your benchmark.

@michaelpj
Copy link
Contributor Author

/benchmark plutus-benchmark:nofib

Copy link
Contributor

Click here to check the status of your benchmark.

Copy link
Contributor

Comparing benchmark results of 'plutus-benchmark:nofib' on 'd95daf39c' (base) and 'eb4780afd' (PR)

Results table
Script d95daf3 eb4780a Change
clausify/formula1 3.972 ms 2.990 ms -24.7%
clausify/formula2 5.236 ms 4.001 ms -23.6%
clausify/formula3 14.25 ms 10.96 ms -23.1%
clausify/formula4 29.75 ms 24.63 ms -17.2%
clausify/formula5 68.46 ms 52.71 ms -23.0%
knights/4x4 19.28 ms 16.86 ms -12.6%
knights/6x6 50.67 ms 43.80 ms -13.6%
knights/8x8 89.21 ms 76.47 ms -14.3%
primetest/05digits 10.38 ms 9.888 ms -4.7%
primetest/08digits 16.80 ms 16.01 ms -4.7%
primetest/10digits 20.07 ms 19.21 ms -4.3%
primetest/20digits 39.72 ms 38.23 ms -3.8%
primetest/30digits 61.09 ms 58.52 ms -4.2%
primetest/40digits 83.21 ms 79.02 ms -5.0%
primetest/50digits 101.1 ms 96.02 ms -5.0%
queens4x4/bt 5.965 ms 5.225 ms -12.4%
queens4x4/bm 7.730 ms 6.776 ms -12.3%
queens4x4/bjbt1 7.317 ms 6.397 ms -12.6%
queens4x4/bjbt2 6.798 ms 5.954 ms -12.4%
queens4x4/fc 15.76 ms 13.68 ms -13.2%
queens5x5/bt 79.86 ms 70.00 ms -12.3%
queens5x5/bm 86.02 ms 75.78 ms -11.9%
queens5x5/bjbt1 93.59 ms 82.49 ms -11.9%
queens5x5/bjbt2 90.52 ms 79.49 ms -12.2%
queens5x5/fc 198.9 ms 172.5 ms -13.3%
TOTAL 1.206 s 1.068 s -11.4%

@michaelpj
Copy link
Contributor Author

Okay, close enough that I do doubt that the constr change was adding anything. We can always do it on its own later.

@michaelpj michaelpj merged commit 6d5e7a1 into master Apr 12, 2024
6 checks passed
@michaelpj michaelpj deleted the mpj/vector-cases branch April 12, 2024 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants